Мне необходимо периодически выполнять задания ETL для файлов, хранящихся на AWS S3.
Чтобы не обрабатывать одни и те же файлы дважды, мне нужно где-то сохранять статус файла, например, в некоторых СУБД. Скажем, AWS RDS для PostgreSQL.
Например, я создам следующую таблицу:
|file_name | status |
|-----------------------|
|file1.csv | pending |
|file2.json| pending |
В самом начале Apache Spark для приложения AWS EMR я прочитаю все файлы в состоянии ожидания из упомянутой таблицы и ETL их. Когда, например, ETL для file1.csv
будет завершен, мне нужно пометить его как completed
в таблице PostgreSQL. Примерно так:
|file_name | status |
|-----------------------|
|file1.csv | completed |
|file2.json| pending |
AFAIK, Spark не поддерживает работу UPDATE
для JDBC, поэтому я думаю, что-то не так с моей системой. Если да, не могли бы вы предложить, как правильно отслеживать обработанные файлы на S3, чтобы не обрабатывать их снова при новом пакетном запуске ETL?