#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. И это зависит от вашей реализации после ее трансляции.