情况:多个相同的 kafka 数据源被平面映射到元组中以供以后合并、缩减、保存等等。
我需要知道每个平面映射数据包来自哪个原始数据源以在元组中进行标记。我不想为每个数据源设置单独的 FlatMapFunction,因为可能有数百个。
理想情况下,我能够将一些值传递给平面图函数以添加到生成的元组中。
可能吗?有其他方法可以实现这一点吗?
最佳答案
由于您有多个源操作符,您可以通过构造函数参数简单地配置不同的源。作为替代方案,您还可以使用广播变量:https://cwiki.apache.org/confluence/display/FLINK/Variables+Closures+vs.+Broadcast+Variables
关于联合:这取决于你需要的语义。如果您在 reduce
步骤之前执行此操作,则会在所有源上构建分区 - 如果您在 reduce 之后执行此操作,您将获得分区每个来源。因此,如果两个源发出具有相同键的元组,它们最终会在不同的分区中。在 flatMap
之前执行合并不允许 flatMap
与源链接——如果禁止链接,我预计会出现性能损失。
关于java - flink - 将值注入(inject) flatmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836495/