2015-05-11 5 views
5

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

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

я с помощью API SCALA в Флинка 0,9 milestone1

ответ

4

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

+0

Хорошо, у меня есть еще один вопрос: есть ли какая-либо документация, описывающая, как эти методы работают или, по крайней мере, дает полезные советы? было бы неплохо иметь его. На самом деле у меня есть проблема и с поиском стандартной документации для flink , т. Е. У меня есть еще несколько сомнений относительно присоединения и сравнения ее с каким-то другим возможным решением. –

+1

В своей [wiki] документации есть немного документации о внутренних функциях Flink (https: // cwiki .apache.org/слияния/дисплей/Flink/Флинка + Внутренности). Однако я не мог найти то, что описывает, как работают операторы обработки. Существует сообщение [blog post] (http://flink.apache.org/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html) о том, как объединения выполняются во Flink, которые могут быть полезно. –

+1

Другое [сообщение в блоге] (http://flink.apache.org/news/2015/05/11/Juggling-with-Bits-and-Bytes.html) описывает управление памятью Flink и то, как она работает с двоичными данными. –