【问题标题】:Change source function in Flink without interrupting the execution在不中断执行的情况下更改 Flink 中的源函数
【发布时间】:2018-04-28 02:28:44
【问题描述】:

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

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    在 Flink Forward 上有一个演讲,讨论了一些相关问题。我想你会发现它很有帮助。见Bootstrapping State In Apache Flink

    【讨论】:

    • 感谢分享。它很有用,但不能解决我遇到的问题。
    • 嗨,@StephenL。你能知道怎么做吗?
    【解决方案2】:

    您可以连接来自两个源函数的流,并将它们运行到CoMapFunction。在其中,您可以决定要丢弃哪个,但前提是在您准备好切换到它之前,后面的源不会输出数据。

    【讨论】:

    • 这不是我要找的东西。我想有一种方法来动态创建一个新的源函数并用它替换现有的。
    【解决方案3】:

    好的,作为替代方案,您可以查看我之前在 SO 上提供的答案,以及 wrap multiple sources 的一些示例代码。但请注意 Fabian 的评论,即仅当下游运算符的并行度也是 1 时才会保留顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-28
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多