Обработка огромной таблицы базы данных с помощью Spark

У меня есть огромная таблица базы данных, которая содержит миллионы записей. Каждая запись может обрабатываться изолированно, и она должна быть преобразована, скажем, в строку.

Поэтому я начал смотреть по сторонам и подумал, может ли Спарк помочь мне в этом сценарии. В частности, я написал что-то очень простое, как это:

session.read.jdbc(...).rdd
    .map(row => ...convert each row in a string)
    .saveAsTextFile(....)

Проблема: она отлично работает с маленькими / средними таблицами, но я получаю OutOfMemory в случае больших таблиц.

Даже если я думаю, что понял, как работает секционирование jdbc (и оно работает), похоже, что session.read.jdbc возвращает (т.е. перемещает каждую строку в метод map) только после загрузки всего набора данных.

Можно ли, используя этот или другой подход, преобразовывать (то есть обрабатывать) каждую строку, когда она читается?

Я уже рассматривал подобный вопрос, как указано в комментариях ниже, но там, что пользователь выполняет агрегацию (df.count), в то время как мне просто нужно перебирать записи по одной, поэтому мне было интересно, если это "ленивый" итерация возможна.

Спасибо

0 ответов

Другие вопросы по тегам