Обработка огромной таблицы базы данных с помощью Spark
У меня есть огромная таблица базы данных, которая содержит миллионы записей. Каждая запись может обрабатываться изолированно, и она должна быть преобразована, скажем, в строку.
Поэтому я начал смотреть по сторонам и подумал, может ли Спарк помочь мне в этом сценарии. В частности, я написал что-то очень простое, как это:
session.read.jdbc(...).rdd
.map(row => ...convert each row in a string)
.saveAsTextFile(....)
Проблема: она отлично работает с маленькими / средними таблицами, но я получаю OutOfMemory в случае больших таблиц.
Даже если я думаю, что понял, как работает секционирование jdbc (и оно работает), похоже, что session.read.jdbc возвращает (т.е. перемещает каждую строку в метод map) только после загрузки всего набора данных.
Можно ли, используя этот или другой подход, преобразовывать (то есть обрабатывать) каждую строку, когда она читается?
Я уже рассматривал подобный вопрос, как указано в комментариях ниже, но там, что пользователь выполняет агрегацию (df.count), в то время как мне просто нужно перебирать записи по одной, поэтому мне было интересно, если это "ленивый" итерация возможна.
Спасибо