当前位置: 首页 > 知识库问答 >
问题:

流式Pubsub数据丰富固定BigQuery数据的数据流模板/模式

孙志
2023-03-14

由于我刚接触DataFlow/Beam,概念还不太清楚(或者至少我在开始编写代码时有困难),我有很多问题:

  1. 什么是最好的模板或模式,我可以用来做到这一点?我应该先执行BigQuery的PTransform(然后执行PubSub的PTransform)还是先执行PubSub的PTransform?
  2. 我怎么做加入?比如pardo.of(...).WithSideInputs(PCollectionView >map)
  3. PubSub的最佳窗口设置是什么?BigQuery的PTransform部分的窗口设置与Pubsub的PTransform部分不同,这是否正确?

共有1个答案

慕兴平
2023-03-14

您需要加入两个pCollections。

  1. 包含来自pub/sub的数据的PCollection。这可以通过使用pubsubio.read ptransform.
  2. 创建
  3. 包含来自BigQuery的数据的PCollection。如果数据是静态的,则可以使用BigQuerYIO.Read转换。但是,如果数据可以更改,Beam中当前可用的BigQuery转换可能无法工作。一种选择可能是使用transformperioadimulp和您自己的pardo创建定期更改的输入。参见这里的示例(请注意perioadimulp转换是最近添加的)。

您可以在pardo中组合数据,其中pcollection(1)是主输入,pcollection(2)是副输入(类似于上面的示例)。

 类似资料:
  • 我想使用Cloud Dataflow,PubSub和Bigquery将tableRow写入PubSub消息,然后将它们写入Bigquery。我希望表名、项目id和数据集id是动态的。 我在internet上看到下面的代码,我不明白如何传递数据行参数。 先谢谢你,盖尔

  • 我正在编写一个Flink流程序,其中我需要使用一些静态数据集(信息库,IB)来丰富用户事件的数据流。 对于例如。假设我们有一个买家的静态数据集,并且我们有一个事件的clickstream,对于每个事件,我们要添加一个布尔标志,指示事件的实施者是否是买家。 另一个选择可以是使用托管操作员状态来存储购买者设置,但是我如何保持按用户id分配的该状态,以避免在单个事件查找中使用网络I/O呢?在内存状态后端

  • 我正在尝试设置我的开发环境。我一直在使用pubsub模拟器进行开发和测试,而不是在生产中使用谷歌云pubsub。为此,我设置了以下环境变量: 这适用于python google pubsub库,但当我切换到使用java apache beam进行google数据流时,管道仍然指向生产google pubsub。管道上是否有需要设置的设置、环境变量或方法,以便管道读取本地pubsub仿真器?

  • 在我的工作中,我没有任何复杂的转换要做。所以谷歌提供的模板将为我工作开箱即用。但缺乏指定自己订阅的能力正困扰着我。我不想仅仅因为这个原因而设置自定义作业管道。有人知道有没有解决办法吗?

  • 我正在用Flink做一个实时项目,我需要用以前的交易丰富每一张卡的状态,以计算如下的交易特性: 对于每一张卡,我都有一个功能,可以统计过去24小时内的交易次数。另一方面,我有两个数据源: 在Flink流中使用静态数据集丰富数据流 任何帮助都是非常感激的。

  • 如何使用带有DataflowRunner的apache光束从Google BigQuery数据集获取表列表? 我找不到如何从指定的数据集中获取表。我想使用数据流的并行处理编程模型将表从位于美国的数据集迁移到位于欧盟的数据集。