flink - 将值注入flatmap

时间:2015-11-20 21:37:45

标签: java apache-kafka apache-flink

情况:多个相同的kafka数据源被平面映射到元组中,以便以后联合,减少,保存等等。

我需要知道每个flatmapped数据包来自哪个原始数据源来标记元组。我并不是每个数据源都有一个单独的 FlatMapFunction ,因为可能有数百个。

理想情况下,我能够将一些值传递给flatmap函数以添加到生成的元组中。

可能?其他一些方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

由于您有多个源运算符,您可以通过构造函数参数简单地配置不同的源。作为替代方案,您还可以使用广播变量https://cwiki.apache.org/confluence/display/FLINK/Variables+Closures+vs.+Broadcast+Variables

关于联盟:这取决于您需要的语义。如果您在 reduce步骤之前执行此操作,则会在所有源上构建分区 - 如果您在之后执行,则会获得每个源的分区。因此,如果两个源发出具有相同密钥的元组,则它们最终位于不同的分区中。在flatMap禁止flatMap禁止与源链接之前执行联合 - 如果禁止链接,我会期望性能下降。