带有反馈循环的 Apache Flink Stream



如何在 Flink 流中实现反馈循环。 换句话说,我怎样才能编写一个也是SourceFunction的SinkFunction?

DataStream<Control> controlSignal = ..
DataStream<Data> dataStream = ...
DataStream<Output>  outputStream = controlSignal
.connect(dataSignal)
.flapMap(FlatMapFunction)

现在,我想将输出流发送到接收器,并根据某些逻辑将数据发送到控制流。

一种方法是让 ControlStream 从 Kafka 等外部系统读取,我可以将 Stream 输出到 Kafka 主题,这将完成这项工作。但是,如果我只想从流的末尾反馈到流的开头,那么使用外部系统似乎很奇怪。

您需要使用迭代。迭代控制信号的一种常见方法是使用带有函数Control数据的侧输出(在您的情况下,它必须是CoProcessFunction),然后用于关闭迭代。

一个挑战通常是控制流想要广播,而数据流被分区以进行并行处理。Flink 1.5 支持连接键控流和广播流,旧版本不支持。

相关内容

  • 没有找到相关文章

最新更新