没有接收器的流数据流管道

汤玛士

我们有一个运行在Google Cloud Dataflow工作者上的流数据流管道,该管道需要从Pu​​bSub订阅中读取,对消息进行分组并将其写入BigQuery。内置的BigQuery Sink无法满足我们的需求,因为我们需要针对每个组指定特定的数据集和表格。由于流传输管道不支持自定义接收器,因此似乎唯一的解决方案是在ParDo中执行插入操作。像这样:

在此处输入图片说明

是否存在管道中没有接收器的已知问题,或者在编写此类管道时需要注意的任何事情?

亚历克斯·阿马托(Alex Amato)

编写没有接收器的管道应该没有任何问题。实际上,接收器是ParDo流式传输的一种。

我建议您使用自定义ParDo并将BigQuery API与自定义逻辑一起使用。这是BigQuerySink的定义,您可以使用此代码作为起点。

您可以定义类似于StreamingWriteFn的自己的DoFn来添加自定义ParDo逻辑,该逻辑将写入适当的BigQuery数据集/表。

请注意,这是使用Reshuffle而不是GroupByKey我建议您使用Reshuffle,它也会按键分组,但避免不必要的窗口延迟。在这种情况下,这意味着元素应在输入时立即写出,而无需额外的缓冲/延迟。此外,这使您可以在运行时确定BQ表名称。

编辑:我不建议使用内置的BigQuerySink写入不同的表。建议您在自定义DoFn中使用BigQuery API,而不要使用BigQuerySink

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用PubSub在本地运行Java数据流管道

将Google数据流管道的结果写入多个接收器

没有可用的EJB接收器

取消数据流管道中的特定项目

从有限的数据流管道到pub / sub的确定性发布顺序

计划数据流管道

数据流管道和pubsub仿真器

在数据流管道处理完所有数据后执行操作

数据流管道中的外部Python依赖关系

数据流管道python依赖安装但无法导入

如何修复从PubSub读取并写入BigQuery的数据流管道中的“ AttributeError:'str'对象没有属性'items'”

ADF映射数据流-接收器转换动态分区数

从数据流管道的中间读取Bigtable数据

Azure Purview对ADF数据流中的Delta格式接收器的支持

Flume-使用Avro源和接收器分层数据流

从数据流管道写入BQ时的动态表名称

BigQuery源/接收器的数据流管道详细信息未显示

不支持从数据流接收器点燃事务?

如何配置数据流管道以使用共享 VPC?

如何用 Java 编写 GCP 数据流管道?

使用数据流管道继续处理循环

数据流管道 - “处理卡在步骤 <STEP_NAME> 至少 <TIME> 没有输出或完成状态完成......”

尝试使用数据流接收器更新行时出现无效的列名错误

Apache Beam 数据流管道 (python) 中的步骤的 if 语句

ADF:我的数据流中忽略了接收器目录

无法运行 TPL 数据流管道

波束数据流管道表创建接收器作为来自 GCS 的 Bigquery

写入接收器的 Azure 数据工厂数据流也会创建一个空的 blob 文件

无法从数据流中为 Oracle 链接服务选择接收器