Использует ли Spark's limitByKey постоянный объем памяти или линейный по количеству ключей? - PullRequest
1 голос
/ 16 января 2020

Насколько я знаю, существуют решения внешней сортировки и / или в Had oop MapReduce, которые позволяют использовать постоянный объем памяти, не более, при сортировке / группировке данных по ключам для дальнейшей прокачки через агрегацию функции для каждой клавиши.

Предполагая, что состояние уменьшения также является постоянной величиной, как сложение.

Доступна ли эта группировка / сортировка с постоянной памятью для Apache Spark или Flink, и если да, существует ли какая-либо конкретная c конфигурация или программный c способ запроса этого способа обработки с постоянной памятью в случае reduByKey или aggregateByKey?

1 Ответ

0 голосов
/ 16 января 2020

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

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

Имеется ли у вас конкретный c вариант использования, где Вам нужно было бы ограничить память определенной операции c?

Кстати, вы можете рассмотреть Spark и Flink, чтобы заменить Had oop MapReduce. Есть только пара крайних случаев, когда MapReduce может превзойти системы следующего поколения.

...