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