RDS到S3 - 数据转换AWS

时间:2018-05-16 02:22:23

标签: java amazon-web-services apache-spark amazon-emr data-transfer

我的RDS postgres / oracle中有大约30个表(尚未确定它是oracle还是postgres)实例。我想获取在过去4小时内插入/更新的所有记录(可配置),创建与每个表有关的csv文件并将文件存储在S3中。我希望整个过程都是事务性的。如果从一个表中获取数据时出现任何错误,我不希望在S3中保留与其他29个表相关的数据。数据不是很大,每个表中的数据应该是少于100条或更少的记录,持续时间为4小时。

我正在考虑在EMR集群中设置一个Spark作业来从RDS获取数据,为每个表创建一个csv,并在流程结束时将所有文件发布到S3。数据发布到S3后,EMR集群将被销毁。一个cloudwatch触发器将每4小时调用一次lamda,这将启动一个执行此工作的新EMR集群。

有没有其他方法可以探索这种转变?

1 个答案:

答案 0 :(得分:1)

查看正在使用EMR的AWS Glue,但您不需要关心基础架构和配置,只需setup crawlerwrite your ETL job

请注意,AWS Glue不支持JDBC连接的谓词下推(currently s3 only),因此这意味着它将首先加载整个表,然后才应用过滤。

此外,您应该仔细考虑原子性,因为Glue ETL作业只是简单地处理数据并在没有事务的情况下写入接收器。如果失败,它不会删除部分书面记录,因此您应该自己管理。我会考虑的选择很少:

  1. 每次执行时将数据写入临时文件夹(本地或s3),然后使用aws s3 sync命令将对象移动到最终目的地,或使用TransferManager from AWS SDK复制数据
  2. 将数据写入最终目标到专用文件夹中,如果失败,请使用CLI或SDK
  3. 删除它