flink中的多流迭代

sdnqo3pr  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(346)

我的问题是关于apache flink中多个流上的迭代。
我是一个flink初学者,目前正在尝试对flink执行递归查询(例如,datalog)。
例如,查询每5分钟计算一次可传递闭包(滚动窗口)。如果我有一个输入流inputstream(由初始边缘信息组成),另一个输出流(传递闭包)由inputstream初始化。我想通过加入inputstream来迭代地丰富outputstream。对于每个迭代,反馈应该是outputstream,并且迭代将持续到outputstream上不能再追加边为止。我的传递闭包的计算应该每5分钟定期触发一次。在迭代过程中,inputstream应该是“hold”,并为outputstream提供数据。
有可能在Flink这样做吗?谢谢你的帮助!

bvn4nwqk

bvn4nwqk1#

这听起来像是一个侧输入问题,您希望将“inputstream”视为一个与另一个“outputstream”联接的批处理数据集(带有刷新)。不幸的是,flink目前并没有提供一种简单的方法来实现它(参见https://stackoverflow.com/a/48701829/231762)
如果这两个流都来自数据源,那么一种方法是创建一个 Package 器源来控制记录的顺序。它必须发出类似tuple2的东西,其中一个边或另一个边为null,然后在下游(自定义)函数中基本上拆分这些边,并进行连接。
如果这是可能的,那么这个源可以在发出“input”元组的同时阻塞“output”元组,再加上你需要的其他逻辑(5分钟刷新等)。请参阅我对上述其他so问题的回应,以了解执行此操作的基本代码。

相关问题