更改Flink中的源功能,而不会中断执行



我正在寻找一个解决方案,在执行进展时,我如何更改flink中的源函数:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
SourceFunction<String> mySource = ...; // this a function that I want to change during runtime;
DataStream<String> stream = env.addSource(mySource); 
stream.map(...).print(); // creating my stream
env.execute("sample");

我正在考虑围绕SourceFunction的真实实现创建包装器,该包装在需要时替换幕后的实现,但会遇到SourceContext的概念。

在Flink Forward进行了谈话,研究了一些相关问题。我认为您会发现它有帮助。请参阅Apache Flink中的引导状态。

您可以从两个源函数中连接流,然后将它们运行到CoMapFunction中。在其中,您可以决定要丢弃哪个,但是假设后来的源直到您准备切换到它。

好的,作为替代方案,您可以查看我先前提供的答案,并提供一些示例代码来包装多个来源。但是请注意,Fabian的评论说,这只会在下游操作员的并行性也是1。

时保留订单。

最新更新