我正在寻找一种解决方案,如何在执行过程中更改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
.
3条答案
按热度按时间cnjp1d6j1#
好的,作为一种替代方法,您可以查看我之前提供的答案,以及一些 Package 多个源代码的示例代码。但请注意fabian的评论,即只有当下游操作符的并行度也为1时,这才会保持顺序。
voj3qocg2#
您可以连接来自两个源函数的流,并将它们运行到
CoMapFunction
. 在这种情况下,您可以决定放弃哪一个,但前提是在您准备好切换到数据源之前,后面的源不会输出数据。qhhrdooz3#
在flink forward上有一次谈话,讨论了一些相关的问题。我想你会发现这很有帮助。请参阅apache flink中的引导状态。