как решить проблему утечки диска в спарк? - PullRequest
0 голосов
/ 27 февраля 2020

Я из SQL разработчика и недавно перешел на большие данные - apache Spark Platform. У меня есть набор данных, который построен с использованием комбинации с 3 другими наборами данных. 3 набора входных данных (в основном справочные данные) Вход 1 = происхождение (список городов происхождения) Вход 2 = места назначения (список городов назначения) Вход 3 = группы данных (все источники или места назначения сгруппированы в data_groups. Этот набор данных предоставляет эту информацию)

Ввод данных транзакции Ввод 4 = сборы (сборы определяются для комбинаций отправления и назначения. Чаще всего сборы определяются группами) пример строки кода сбора ChargeDataset

Выходной набор данных = So если CHG_1 определен для источника как Grp1 и пункта назначения как Grp3. Если предположить, что в Grp1 есть 3 города, а в Grp3 - 4 города, то этот сбор применяется к 3 * 4 = 12 исходным, комбинациям назначения. Поэтому я ожидаю, что мой выходной набор данных расширится до 12 строк в каждой для указанной выше комбинации назначения. Точно так же, если это ВСЕ, тогда, предполагая, что у меня есть 12 Происхождения и 10 Назначений, я закончу расширение этой строки до 12 * 10 = 120 строк.

Как вы можете видеть, я расширяю свои наборы входных данных заряда, это привело к к взрыву данных. Хотя мои входные наборы данных находятся в МБ, мой выходной набор данных вырос в размере 70 ГБ. Все эти вычисления выполняются в памяти, поэтому я считаю, что я получаю много утечки диска. В конце концов задача завершается с ошибкой.

Если это в традиционной базе данных СУБД, то я бы разрешил ее, используя технику курсора. Как мне решить эту проблему здесь? Моя команда администратора данных не рада выделять больше памяти и хочет, чтобы я оптимизировал свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...