1

(How)是否可以动态地将主题添加到正在运行的管道或作为源或接收器移除(Kafka或PubSub)?或者像使用BigQuery Table名称那样具有动态模式。梁/云数据流:如何将Kafka(或PubSub)主题添加到正在运行的流

一些背景:我们有不同的主题,每个客户一个主题,以更好地促进下游聚合,并清除/增加它们。 Kafka用于在比PubSub更长的时间段内回填计算。

我现在脑海中的选项是扩展KafkaIO以支持这个选项,或者每次删除一个主题时(意思是在流更新时会有一些滞后现象)来更新管道。或者,也许我头脑中有错误的设计模式,还有其他解决方案。

回答

2

你是正确的,现在最简单的解决方案是更新管道。然而,一个名为Splittable DoFn(SDF)的新API目前正在积极开发中;它已在Cloud Data Runner中以流模式和Direct runner提供,Flink和Apex跑步者正在实施该实施。

它使我们能够完成诸如“创建一个Kafka主题名称的PCollection并阅读每个主题名称”这样的事情,因此您可以让一个管道阶段生成要读取的主题名称(例如,名称本身可以到达每次添加客户时都可以使用Kafka或Pubsub,或者您可以编写一个SDF来观察数据库查询的结果,返回客户列表并发布新的客户),另一个阶段读取这些主题。

请参阅http://s.apache.org/splittable-do-fn获取API的设计文档,http://s.apache.org/textio-sdf对于使用此API重构TextIO的示例 - 您可能想尝试以类似方式自己修改KafkaIO。

+0

谢谢,我检查了提案,应该可行。正如我所看到的那样,如果没有工作流程更新,也无法在UI中将其视为可见的,对吗? (用于监控目的以检测出造成问题的各个主题) –

+0

您能澄清这个问题吗?您是否想要使用用户界面手动添加新主题,还是希望用户界面帮助您查找主题,哪些记录会导致下游问题?这些看起来是非常不同的问题。 – jkff

+0

对不起,澄清:不通过用户界面添加。更重要的是有能力将每个主题订阅/写入器分离成单独的步骤/转换(即当在UI中可视化时的框)。原因是更容易监控,错误分析,并且据我所知,还有一些DataFlows的恢复和扩展能力受益,因为这些处理Bundles的工作都是通过个别步骤进行的。但是写这个我实际上意识到这将意味着能够从内部动态地更新图形,这只能通过对现在的AFAIK进行适当的管道更新来实现。 –

相关问题