如何将大量数据从 AWS Oracle RDS 实例移动到 S3?
How to move lots of data from AWS Oracle RDS instance to S3?
我在 AWS Oracle RDS 实例中的一个 table(约 70 亿行)中有大量数据。最终结果是我希望 table 作为管道分隔值存储在 S3 中,以便我可以将其读入 EMR。这基本上是一次性的事情,所以我需要它准确地工作,而不必因为超时而重新 运行 整个上传;我真的不在乎它是如何工作的或者 difficult/annoying 它是如何设置的。我在 Oracle 机器上有 root 权限。我查看了数据管道,但它们似乎只支持 MySQL,我必须让它与 Oracle 一起使用。此外,我没有足够的硬盘驱动器 space 将整个 table 转储到 Oracle 实例上的 CSV,然后上传它。我该如何完成?
您可以使用 Sqoop (http://sqoop.apache.org/) 来执行此操作。可以写一个sqoop脚本,可以调度为Data Pipeline下的'EMR Activity'
Sqoop 使用 Hadoop,可以打开多个到 Oracle 的连接并加载。
您可以将原始数据保存在 S3 上,并直接从 EMR 上读取。或者您可以选择使用 'S3Distcp' activity 将其复制到 EMR(如果需要,再次安排在 Data Pipeline 上)。
如果您没有调度需求,您可以使用 EMR 控制台启动 EMR 集群 - 并在其上使用 运行 Sqoop。
您可以使用 Python/boto 在较小的范围内执行相同的操作。
使用单线程复制 70 亿条记录需要 "only" 8 天。
您可以创建 100 个线程队列并并行处理 Oracle table 分区。
它可能不是生产解决方案,但它适用于我的临时工作。
我在 AWS Oracle RDS 实例中的一个 table(约 70 亿行)中有大量数据。最终结果是我希望 table 作为管道分隔值存储在 S3 中,以便我可以将其读入 EMR。这基本上是一次性的事情,所以我需要它准确地工作,而不必因为超时而重新 运行 整个上传;我真的不在乎它是如何工作的或者 difficult/annoying 它是如何设置的。我在 Oracle 机器上有 root 权限。我查看了数据管道,但它们似乎只支持 MySQL,我必须让它与 Oracle 一起使用。此外,我没有足够的硬盘驱动器 space 将整个 table 转储到 Oracle 实例上的 CSV,然后上传它。我该如何完成?
您可以使用 Sqoop (http://sqoop.apache.org/) 来执行此操作。可以写一个sqoop脚本,可以调度为Data Pipeline下的'EMR Activity'
Sqoop 使用 Hadoop,可以打开多个到 Oracle 的连接并加载。
您可以将原始数据保存在 S3 上,并直接从 EMR 上读取。或者您可以选择使用 'S3Distcp' activity 将其复制到 EMR(如果需要,再次安排在 Data Pipeline 上)。
如果您没有调度需求,您可以使用 EMR 控制台启动 EMR 集群 - 并在其上使用 运行 Sqoop。
您可以使用 Python/boto 在较小的范围内执行相同的操作。 使用单线程复制 70 亿条记录需要 "only" 8 天。 您可以创建 100 个线程队列并并行处理 Oracle table 分区。 它可能不是生产解决方案,但它适用于我的临时工作。