java - flink - 将值注入(inject) flatmap

标签 java apache-kafka apache-flink

情况:多个相同的 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/

相关文章:

Java HTTP PUT 与 Java 中的摘要式身份验证

Javax Bean验证: @Max and @Min is not working

java - 带有kafka主干的Activiti

apache-spark - 使用 Python 中的 Spark Structured Streaming 从 Kafka 读取数据并打印到控制台

apache-flink - Flink 检查点导致背压

apache-flink - 创建具有通用返回类型的 FlinkSQL UDF

java - 具有多个继承类的通用返回类型的自引用方法

java - 在 Android 中添加后退键功能,以转到文件管理器中的上一个文件夹位置

apache-kafka - 尝试消费时如何解决 "Leader not available"Kafka 错误

apache-kafka - FlinkKafkaConsumer在HiBench中的容错