Всем привет. Подскажите, как решить проблему.
Помогаю дебажить скрипт на Pyspark, который отрабатывает на Google Colab. Да, может не лучший вариант, но какой есть.
Если ограничить датасет с помощью limit - прорабатывает нормально.
При повышении размера данных - начинает отваливаться с ошибкой java.lang.OutOfMemoryError: Java heap space.
Раньше все работало, ошибка появилась после убирания одного из фильтров, который раньше отбрасывал часть значений.
Стектрейс -
https://pastebin.com/HgkMR58xЛогика кода - делается практически кросс джойн двух таблиц, пары фильтруются по ряду признаков, затем оставшиеся пары для каждого ключа сортируются по ряду параметров и выбирается лучший.
План выполнения (с поставленными лимитами) -
https://pastebin.com/3FguXCJ4Сам код.
https://pastebin.com/v9bHbyikПодскажите, что можно сделать чтобы скрипт отработал, не вываливаясь? Скорее всего нужно поиграться с количеством partition-ов, но я не очень хорошо разбираюсь в спарке и мне даже сложно понять в какую сторону. Идеальный вариант - спарк грузит кусок маленький датасета, делает джойны и агрегации с другими таблицами, обрабатывает, записывает результаты на диск, идет дальше. Поскольку это не кластер, излишне параллелить смысла не имеет.