在不中断执行的情况下更改flink中的源函数

hsgswve4  于 2021-06-24  发布在  Flink
关注(0)|答案(3)|浏览(370)

我正在寻找一种解决方案,如何在执行过程中更改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 .

cnjp1d6j

cnjp1d6j1#

好的,作为一种替代方法,您可以查看我之前提供的答案,以及一些 Package 多个源代码的示例代码。但请注意fabian的评论,即只有当下游操作符的并行度也为1时,这才会保持顺序。

voj3qocg

voj3qocg2#

您可以连接来自两个源函数的流,并将它们运行到 CoMapFunction . 在这种情况下,您可以决定放弃哪一个,但前提是在您准备好切换到数据源之前,后面的源不会输出数据。

qhhrdooz

qhhrdooz3#

在flink forward上有一次谈话,讨论了一些相关的问题。我想你会发现这很有帮助。请参阅apache flink中的引导状态。

相关问题