我在MySQL中有一个包含5亿条记录的表 . 我想将此表导入Amazon DynamoDB . 我知道有两种方法可以实现:
JAVA Api:这种方法的问题在于它很慢,有时也会丢弃与数据库的连接 .
亚马逊数据导入管道:似乎很有希望,但是如何将数据从MySQL导出到DynamoDB识别的格式?
请让我在两者之间采取最佳方法 .
AWS有两项服务可以帮助您执行该操作 .
Data Pipeline
一个非常简单的方法 - 如果你的“模式”相似(我总是觉得谈论DynamoDB的模式很尴尬) - 将从MySQL导出到S3,然后从S3导入到DynamoDB .
Data Pipeline有两个教程可帮助您设置任务
http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-copydata-mysql.html http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-part1.html
您可以通过开发执行导入和导出的单个管道来进一步改进此过程 . 如果需要在导入和导出之间转换数据,则需要开发转换代码并从管道执行 .
在数据管道术语中,这称为活动 . 活动可能像shell脚本一样简单,也可能像在EMR close上运行的Hive / Hadoop / Pig应用程序一样复杂 . http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-concepts-activities.html
数据管道还允许您以固定的时间间隔安排执行 .
Hive and EMR
Hive是一个编写SQL命令来操作数据源的hadoop工具 . Hive在集群上运行的Hadoop应用程序中转换SQL . 您可以在AWS Elastic Map Reduce Cluster(托管服务hadoop集群)上运行Hive .
EMR上的Hive可以连接到非关系数据源,例如S3或DynamoDB数据库上的文件 . 它允许您在DynamoDB上编写SQL语句!
在您的用例中,您需要编写一个Hive脚本,该脚本将从MySQL读取并写入DynamoDB . 您可以使用标准(Hive)SQL表达式转换数据 .
更多关于EMR的Hive:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive.html
有关DynamoDB和Hive的更多信息:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Walkthrough.html http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html
除了其他答案,我想提一下,dynamodb识别 csv 或 tsv 格式文件以进行导入 . 我们还可以使用Elastic Map Reduce使用HIVE sql来批量加载 csv 文件中的数据 . 我们唯一需要考虑的是 - 如果我们使用windows将表转储到 csv 那么我们必须确保将windows系统 \r\n 的行结尾替换为 \n 以使其符合amazon .
csv
tsv
\r\n
\n
2 回答
AWS有两项服务可以帮助您执行该操作 .
带有Hive的
Data Pipeline
一个非常简单的方法 - 如果你的“模式”相似(我总是觉得谈论DynamoDB的模式很尴尬) - 将从MySQL导出到S3,然后从S3导入到DynamoDB .
Data Pipeline有两个教程可帮助您设置任务
http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-copydata-mysql.html http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-part1.html
您可以通过开发执行导入和导出的单个管道来进一步改进此过程 . 如果需要在导入和导出之间转换数据,则需要开发转换代码并从管道执行 .
在数据管道术语中,这称为活动 . 活动可能像shell脚本一样简单,也可能像在EMR close上运行的Hive / Hadoop / Pig应用程序一样复杂 . http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-concepts-activities.html
数据管道还允许您以固定的时间间隔安排执行 .
Hive and EMR
Hive是一个编写SQL命令来操作数据源的hadoop工具 . Hive在集群上运行的Hadoop应用程序中转换SQL . 您可以在AWS Elastic Map Reduce Cluster(托管服务hadoop集群)上运行Hive .
EMR上的Hive可以连接到非关系数据源,例如S3或DynamoDB数据库上的文件 . 它允许您在DynamoDB上编写SQL语句!
在您的用例中,您需要编写一个Hive脚本,该脚本将从MySQL读取并写入DynamoDB . 您可以使用标准(Hive)SQL表达式转换数据 .
更多关于EMR的Hive:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive.html
有关DynamoDB和Hive的更多信息:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Walkthrough.html http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html
除了其他答案,我想提一下,dynamodb识别
csv
或tsv
格式文件以进行导入 . 我们还可以使用Elastic Map Reduce使用HIVE sql来批量加载csv
文件中的数据 . 我们唯一需要考虑的是 - 如果我们使用windows将表转储到csv
那么我们必须确保将windows系统\r\n
的行结尾替换为\n
以使其符合amazon .