Поведение итератора во flink reduceGroup

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

У меня есть набор данных, в котором я применяю groupby, а затем reduceGroup. Как ведет себя итератор, переданный в функцию reduceGroup? это ленивый итератор, который загружает данные по запросу, или нетерпеливый, который подготавливает все данные в памяти при их создании?

Я использую scala api во flink 0.9 milestone1


person il.bert    schedule 11.05.2015    source источник


Ответы (1)


Flink выполняет группировку для groupReduce с помощью оператора сортировки. Оператор сортировки получает определенный бюджет памяти для сортировки. Пока данные попадают в этот бюджет, сортировка будет происходить в памяти. В противном случае сортировка становится внешней сортировкой слиянием и переносится на диск. Flink считывает отсортированный поток данных и применяет функцию groupReduce «на лету». Данные группы не полностью считываются в памяти до применения функции. Следовательно, вы можете обрабатывать очень большие группы, если пользовательская функция не материализует записи группы.

person Fabian Hueske    schedule 11.05.2015
comment
Хорошо, у меня есть еще один вопрос, есть ли документация, в которой описывается, как работают эти методы, или, по крайней мере, дается несколько полезных советов? было бы хорошо иметь это. На самом деле у меня есть проблема с поиском стандартной документации для flink, т.е. у меня есть еще несколько сомнений по поводу соединения и сравнивать ее с каким-то другим возможным решением - person il.bert; 11.05.2015
comment
Немного документации о внутреннем устройстве Flink можно найти в его wiki. Однако я не смог найти ничего, что описывало бы, как реализованы операторы обработки. Есть запись в блоге о том, как объединяются в Flink, что может быть полезно. - person Fabian Hueske; 12.05.2015
comment
В другом сообщении в блоге описывается Управление памятью Flink и его работа с двоичными данными. - person Fabian Hueske; 12.05.2015
comment
очень полезно! Есть ли ссылка на cogroup? вам действительно стоит распространить такую ​​документацию на всех операторов: действительно полезно знать, как они работают при оптимизации - person il.bert; 26.05.2015
comment
Все операторы Flink (Reduce, Sort, CoGroup, HashJoin, SortMergeJoin, ...) начинают выводиться на диск, если памяти не хватает. Философия заключается в том, что разработчику / пользователю не нужно беспокоиться о таких вещах и использовать его как СУБД. Вероятно, это причина, по которой это явно не упоминается в документации. Но я согласен, что этот момент следует прояснить. Спасибо за ответ! :-) - person Fabian Hueske; 26.05.2015