beam/cloud数据流:如何向正在运行的流添加kafka(或pubsub)主题

tvz2xvvm  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(279)

(如何)可以将主题作为源或接收器(kafka或pubsub)动态添加或删除到正在运行的管道中?或者有一个动态模式作为接收器,就像bigquery表名一样。
一些背景:我们有不同的主题,每个客户一个,以更好地促进下游聚合和清理/添加他们的飞行。Kafka用于在比pubsub更长的时间内回填计算。
我现在想到的选项要么是扩展kafkaio来支持这一点,要么是在每次添加或删除主题时更新管道(这意味着在更新流时会有一些延迟)。或者我脑子里有一个错误的设计模式,还有其他解决方案。

csga3l58

csga3l581#

现在最简单的解决方案是更新管道,这是正确的。
然而,一个名为splittable dofn(sdf)的新api目前正在积极开发中;它已经在流模式下的CloudDataFlowRunner和DirectRunner中可用,并且正在flink和apex runner中实现。
它可以执行“创建kafka主题名称的pcollection并读取每个主题”这样的操作,因此您可以让一个管道阶段生成要读取的主题名称(例如,每次添加客户时,名称本身都可以通过kafka或pubsub到达,或者,您可以编写一个sdf来观察数据库查询的结果(返回一个客户列表并发出新的客户),并在另一个阶段读取这些主题。
看到了吗http://s.apache.org/splittable-do-fn api的设计文件,以及http://s.apache.org/textio-sdf 例如,使用这个api重构textio的一个例子——你可能想用类似的方式修改kafkaio。

相关问题