我在apache flink中多个流的迭代中的问题。
我是一个弗林克初学者,目前我正在尝试在Flink上执行递归查询(例如Datalog(。
例如,查询计算每5分钟(翻滚窗口(的及时闭合。如果我有一个输入流inputStream(由初始边缘信息组成(,则由InputStream初始化的另一个输出流(传递闭合(。而且我想通过连接输入流迭代地丰富了输出流。对于每次迭代,反馈应该是输出流,迭代将持续到无法将其附加到OptiveStream上为止。我的传递闭合的计算应每5分钟定期触发。在迭代期间,输入流应为"保持"并为我的OutputStream提供数据。
可以在flink中这样做吗?感谢您的帮助!
这听起来像是侧输入问题,您想将" InputStream"视为批处理数据集(带有刷新(,该数据集已连接到另一个" outputStream"。不幸的是,Flink并没有提供当前实施的简便方法(请参阅https://stackoverflow.com/a/48701829/231762(
如果这两个流都来自数据源,则一种方法是创建一个控制记录排序的包装源。它必须散发像tuple2之类的东西,其中一侧或另一侧为null,然后在下游(自定义(函数中,您本质上将其分开并进行连接。
如果可能的话,那么此源可以在排放"输入"元组时阻止"输出"元组,以及其他听起来您需要的逻辑(5分钟刷新等(。有关执行此操作的骨架代码,请参阅我对上面的另一个问题的回应。