Чтение CSV-файла из s3 с использованием искры

Я новичок в Spark. У меня есть сценарий, в котором мне нужно прочитать и обработать CSV-файл из AWS s3. Этот файл создается ежедневно, поэтому мне нужно прочитать и обработать его, а также выгрузить данные в Postgres.

Я хочу обрабатывать этот огромный файл параллельно, чтобы сэкономить время и память.

Я придумал два дизайна, но меня немного смущает искра, поскольку искровой контекст требует, чтобы соединение было открыто со всеми ведрами s3.

  1. Используйте потоковую потоковую обработку для чтения CSV из s3, обработки и преобразования строк в JSON по строкам и добавления данных JSON в столбец JSONB Postgres.
  2. Используйте Spring & Java -> скачать файл на сервере, затем начать обработку и преобразовать его в JSON.

Может ли кто-нибудь помочь мне получить правильное направление?

1 ответ

Если это ежедневно, и только 100 МБ, вам действительно не нужно много для крупномасштабных инструментов. Я бы оценил <минуту для базовой загрузки и обработки, даже удаленно, после чего происходит загрузка postgres. Какие Postgres предлагает

попробуйте сделать это локально, с aws s3 cp скопировать в вашу локальную систему, затем попробуйте использовать postgres.

Я не буду беспокоиться о параллельном инструменте; даже Spark захочет работать с блоками 32-64 МБ, так что вы получите не более 2-3 рабочих. И если файл.gz, вы получите точно один.

Тем не менее, если вы хотите изучить искру, вы можете сделать это в спарк-оболочке. Сначала загрузите локально, чтобы сэкономить время и деньги.

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