flink:是否支持多个执行环境?

at0kjp5o  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(479)

在flink程序中创建多个executionenvironment可以吗?更具体地说,在同一个main方法中创建一个executionenvironment和一个streamexecutionenvironment,这样就可以进行批处理,并且以后可以顺利地过渡到streaming?
我想另一种可能是将程序一分为二,但出于测试目的,这似乎更好。Flink准备好了吗?
一切似乎工作良好,除了我目前有问题,没有输出时 join 将两个流放在一个公共索引上并使用 window(TumblingProcessingTimeWindows.of(Time.seconds(1))) . 我已经打过电话了 setStreamTimeCharacteristic(TimeCharacteristic.EventTime) 在streamexecutionenvironment上,甚至尝试使用 assignTimestampsAndWatermarks 我刚回来的地方 System.currentTimeMillis() 作为每个记录的时间戳。因为它完成得很快,所以两个流都应该放在1秒的窗口中,不是吗?两个流在连接之前都打印得很好。如果有人感兴趣,我可以尝试提供代码的重要部分(相当长)。
更新:好的,我将两个环境分开(分别放在一个main方法中),然后从第二个main方法调用第一个main。所描述的问题不再发生。

ijnw1ujt

ijnw1ujt1#

不,这不受支持,也不会真正起作用。
至少在flink 1.9之前,给定的应用程序必须具有executionenvironment并使用dataset api,或者具有streamexecutionenvironment并使用datastream api。不能在一个应用程序中混合使用这两种方法。
有正在进行的工作,以更完全地统一批处理和流,但这是一个进展中的工作。为了更好地理解这一点,您可能需要观看最近的flink forward演讲的视频。

相关问题