如何在Flink(Scala)中的任务之间共享私有变量?

时间:2019-04-04 10:57:21

标签: multithreading scala parallel-processing apache-flink flink-streaming

我想在Flink并行任务中的Flink作业(Scala)中共享一个私有变量。我的代码是这样的:

object myJob extends flinkJob {
 private val myVariable = someValue

 def run(params) : Unit = {
  //Stream processing
  //myVariable is used here in the ProcessFunction
 }
}

当我以某种并行度运行此作业时,是否在所有Flink任务中共享一个“ myVariable”副本?如果没有,如何确保在所有并行任务中仅使用和维护一个变量副本?

1 个答案:

答案 0 :(得分:0)

由于您的操作员的并行化副本在单独的JVM中作为任务运行,因此不会有变量的“共享”。您可以做的是使用BroadcastStream与多个任务共享相同的数据。如果需要更新变量,则需要使用iterations,或将变量存储在可以定期查询的外部系统中。