时保留订单。
我正在寻找一个解决方案,在执行进展时,我如何更改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。