Чтение CSV-файла из s3 с использованием искры
Я новичок в Spark. У меня есть сценарий, в котором мне нужно прочитать и обработать CSV-файл из AWS s3. Этот файл создается ежедневно, поэтому мне нужно прочитать и обработать его, а также выгрузить данные в Postgres.
Я хочу обрабатывать этот огромный файл параллельно, чтобы сэкономить время и память.
Я придумал два дизайна, но меня немного смущает искра, поскольку искровой контекст требует, чтобы соединение было открыто со всеми ведрами s3.
- Используйте потоковую потоковую обработку для чтения CSV из s3, обработки и преобразования строк в JSON по строкам и добавления данных JSON в столбец JSONB Postgres.
- Используйте Spring & Java -> скачать файл на сервере, затем начать обработку и преобразовать его в JSON.
Может ли кто-нибудь помочь мне получить правильное направление?
1 ответ
Если это ежедневно, и только 100 МБ, вам действительно не нужно много для крупномасштабных инструментов. Я бы оценил <минуту для базовой загрузки и обработки, даже удаленно, после чего происходит загрузка postgres. Какие Postgres предлагает
попробуйте сделать это локально, с aws s3 cp
скопировать в вашу локальную систему, затем попробуйте использовать postgres.
Я не буду беспокоиться о параллельном инструменте; даже Spark захочет работать с блоками 32-64 МБ, так что вы получите не более 2-3 рабочих. И если файл.gz, вы получите точно один.
Тем не менее, если вы хотите изучить искру, вы можете сделать это в спарк-оболочке. Сначала загрузите локально, чтобы сэкономить время и деньги.