情况:多个相同的kafka数据源被平面映射到元组中,以便以后联合,减少,保存等等。
我需要知道每个flatmapped数据包来自哪个原始数据源来标记元组。我并不是每个数据源都有一个单独的 FlatMapFunction ,因为可能有数百个。
理想情况下,我能够将一些值传递给flatmap函数以添加到生成的元组中。
可能?其他一些方法可以达到这个目的吗?
答案 0 :(得分:1)
由于您有多个源运算符,您可以通过构造函数参数简单地配置不同的源。作为替代方案,您还可以使用广播变量:https://cwiki.apache.org/confluence/display/FLINK/Variables+Closures+vs.+Broadcast+Variables
关于联盟:这取决于您需要的语义。如果您在 reduce
步骤之前执行此操作,则会在所有源上构建分区 - 如果您在之后执行,则会获得每个源的分区。因此,如果两个源发出具有相同密钥的元组,则它们最终位于不同的分区中。在flatMap
禁止flatMap
禁止与源链接之前执行联合 - 如果禁止链接,我会期望性能下降。