如何将大量数据从AWS Oracle RDS实例移至S3?

时间:2015-03-03 19:50:13

标签: oracle amazon-web-services amazon-s3 amazon-rds amazon-data-pipeline

我在AWS Oracle RDS实例中的一个表(约70亿行)中有大量数据。最终结果是我希望该表作为存储在S3中的管道分隔值,以便我可以将其读入EMR。这基本上是一次性的,所以我需要它准确地工作,而不必重新运行整个上传,因为有些东西超时;我真的不在乎它是如何工作的,或者设置起来有多困难/烦恼。我在Oracle机箱上有root访问权限。我查看了数据管道,但似乎它们只支持MySQL,我必须让它与Oracle一起工作。此外,我没有足够的硬盘空间将整个表转储到Or​​acle实例上的CSV,然后上传它。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以使用Sqoop(http://sqoop.apache.org/)来执行此操作。您可以编写一个sqoop脚本,可以在数据管道下安排为“EMR活动”。

Sqoop使用Hadoop并可以打开多个与Oracle的连接并加载。

您可以将原始数据保存在S3上,并直接从EMR上读取。或者您可以选择使用“S3Distcp”活动将其复制到EMR(如果需要,也可以在数据管道上再次安排)。

如果您没有调度需求,可以使用EMR控制台启动EMR集群 - 并在其上运行Sqoop。

答案 1 :(得分:0)

您可以使用Python / boto以较小的比例执行相同操作。 复制70亿条记录将使用单线程“仅”8天。 您可以创建100个线程队列并并行处理Oracle表分区。 它可能不是生产解决方案,但它适用于我的临时工作。

看看Oracle_To_S3_Data_Uploader