Как настроить PySpark для работы с небольшими наборами данных (~ 10 тыс. Строк) для целей модульного / интеграционного тестирования? - PullRequest
0 голосов
/ 03 марта 2020

У меня огромный конвейер ETL, использующий Spark. Для каждой задачи преобразования я хотел бы написать простой модульный тест, в основном имеющий запеченный ввод и ожидаемый вывод. Это позволит мне профилировать и реорганизовывать мою кодовую базу без страха.

Мне удалось это сделать, и она отлично работает, но это действительно медленно. Даже при очень маленьком входном сигнале Spark требуется long время для его запуска (45 секунд с 16 ядрами, автономная искра работает внутри контейнера docker). Я был бы счастлив, если бы смог получить его менее чем за 10 секунд с 4 ядрами (ноутбук).

Задача преобразования относительно проста, эквивалентный код в pandas будет выполняться за миллисекунды. Мне удалось немного его оптимизировать, уменьшив default.parallelism и sql.shuffle.partitions до 32 вместо 200, но мне интересно, есть ли варианты конфигурации или другие идеи для ускорения зажигания. В идеале я хотел бы заставить Spark никогда не использовать диск, избегать накладных расходов, связанных с непротиворечивостью данных и другими не относящимися к делу вещами в моем сценарии.

Другие предложения, связанные с автоматическим тестированием заданий Spark, приветствуются, так как в Интернете мало материалов. на эту тему.

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