apache-spark - Apache Spark AWS S3 跟踪已处理文件的状态
问题描述
我需要对存储在 AWS S3 上的文件执行定期批处理 ETL 作业。
为了不两次处理相同的文件,我需要将文件状态保存在某个地方,例如在某些 RDBMS 中。假设 AWS RDS for PostgreSQL。
例如,我将创建下表:
|file_name | status |
|-----------------------|
|file1.csv | pending |
|file2.json| pending |
在 AWS EMR 应用程序上的 Apache Spark 的一开始,我将从提到的表中读取所有处于挂起状态的文件并 ETL。例如,当 ETLfile1.csv
将完成时,我需要将其标记为completed
PostgreSQL 表中。像这样的东西:
|file_name | status |
|-----------------------|
|file1.csv | completed |
|file2.json| pending |
AFAIK,Spark 不支持UPDATE
JDBC 操作,所以我认为我的系统设计可能有问题。如果是这样,您能否建议如何正确跟踪 S3 上已处理的文件,以便在新的 ETL 批处理运行时不再处理它们?
解决方案
推荐阅读
- python - 在数据帧上正确合并不同长度的系列
- ruby-on-rails - RSpec - 刷新关联
- pyspark - PySpark sql CASE 失败
- angular - Angular:NgbTypeahead 和 onScreen 键盘
- ios - Swift 中的 SideMenu 忽略 UIStatusBarStyle.lightContent
- android - 使用日期时间类型的房间
- python - 如何在 python odoo 中正确计算 For 循环?
- .net - 返回的对象具有空/空 ICollection,除非首先访问/检查它
- sql - 从 db 获取不同范围的多个 id 的结果
- instagram - 权限和功能