В чем разница между широковещательной передачей переменной и передачей в качестве параметра в Flink?

#apache-flink

#apache-flink

Вопрос:

В flink для сериализации переменной в узлах параметр может быть передан в качестве параметра в operator

 env = ...map(new MapFunction(param))
  

и также может транслироваться

 dataset.map(...).withBroadcastSet()
  

на самом деле param и dataset являются обеими переменными в программе и не имеют буквального различия.

Так в чем же на самом деле разница между этими методами?

Ответ №1:

Параметр и функция MAP инициализируются на стороне клиента и будут сериализованы для каждой задачи, содержащей эту функцию MAP, если вы используете параметр для передачи данных.

И если вы используете broacast dataset, широковещательные данные отправляются по конвейеру Flink.

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

Комментарии:

1. Что отправляется через конвейер Flink? Где изначально находятся данные? Где это после трансляции?

2. @Litchy Что ты имеешь в виду? Если вы используете файл HDFS в качестве источника широковещательной передачи, то он изначально хранится в HDFS. И это зависит от вашей реализации после ее трансляции.