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