1 回答
TA贡献1995条经验 获得超2个赞
如果我正确理解了此要求,您会希望按每个应用程序的 DB/Table 拆分摄取片段,然后将它们全部合并为单个“有效负载类型”以进行下游处理。
如果您确实想按 DB/Table 拆分摄取,则可以,但您可能需要考虑利弊。一个明显的好处是粒度,你可以独立地更新应用程序,也许还有可重用性。当然,这也带来了其他挑战。单个应用程序的维护、修复和发布等等。
也就是说,您可以将数据扇入单个消费者。下面是一个例子:
foo1 = jdbc | 变换 | 高密度文件
foo2 = jdbc > :foo1.jdbc
foo3 = jdbc > :foo1.jdbc
foo4 = jdbc > :foo1.jdbc
这里foo1
是从特定 DB/Table 组合读取数据的主要管道。同样,foo2
、foo3
和foo4
可以从其他数据库/表组合中读取。但是,这 3 个流将消耗的数据写入命名目标,在这种情况下恰好是foo1.jdbc
(又名:主题名称)。该目的地在部署foo1
管道时由 SCDF 自动创建;专门将“jdbc”和“转换”应用程序与foo1.jdbc
主题连接起来。
综上所述,我们将不同的表数据路由到同一个目的地,所以下游App,在这种情况下,transform
处理器从不同的表中获取数据。
如果数据的相关性很重要,您可以通过每个jdbc
来源的唯一键(例如,customer-id = 1001)对生产者处的数据进行分区,因此特定于上下文的信息位于同一个transform
处理器实例中(假设您已经“ n" 用于横向扩展处理的处理器实例数)。
添加回答
举报