Как разделить личную переменную между задачами в Flink (Scala)? - PullRequest
1 голос
/ 04 апреля 2019

Я хочу использовать личную переменную в моей работе Flink (Scala) для параллельных задач Flink.Мой код выглядит примерно так:

object myJob extends flinkJob {
 private val myVariable = someValue

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

Когда я запускаю это задание с некоторым распараллеливанием, будет ли одна копия myVariable, общая для всех задач Flink?Если нет, как я могу гарантировать, что во всех параллельных задачах используется и поддерживается только одна копия переменной?

1 Ответ

0 голосов
/ 04 апреля 2019

Поскольку распараллеленные копии вашего оператора выполняются как задачи в отдельных JVM, не может быть «совместного использования» переменной.Что вы можете сделать, это использовать BroadcastStream для совместного использования одних и тех же данных с несколькими задачами.Если вам нужно иметь возможность обновлять переменную, вам нужно будет использовать итерации или сохранить переменную во внешней системе, которую вы можете регулярно запрашивать.

...