mysql - 将数据从 MySQL 复制到 Amazon DynamoDB

标签 mysql amazon-web-services amazon-dynamodb

我在 MySQL 中有一个包含 5 亿条记录的表。我想将此表导入 Amazon DynamoDB。我知道有两种方法可以做到这一点:

  1. JAVA Api:这种方法的问题是它很慢,而且有时会断开与数据库的连接。

  2. Amazon Data Import Pipeline:看起来很有前途,但如何将数据从 MySQL 导出为 DynamoDB 识别的格式?

请让我选择两者之间最好的方法。

最佳答案

AWS 有两种服务可以帮助您执行该操作。

  • 数据管道
  • 带有 Hive 的 EMR 集群

数据管道

一个非常简单的方法 - 如果您的“模式”相似(我总是觉得谈论 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 关闭器上运行的 Hive/Hadoop/Pig 应用程序一样复杂。 http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-concepts-activities.html

Data Pipeline 还可以让您安排定期执行。

Hive 和 EMR

Hive 是一种 hadoop 工具,用于编写 SQL 命令来操作数据源。 Hive 在集群上运行的 Hadoop 应用程序中翻译 SQL。 您可以在 AWS Elastic Map Reduce 集群(托管服务 hadoop 集群)上运行 Hive。

EMR 上的 Hive 可以连接到非关系数据源,例如 S3 或 DynamoDB 数据库上的文件。它允许您在 DynamoDB 之上编写 SQL 语句!

在您的用例中,您需要编写一个从 MySQL 读取并写入 DynamoDB 的 Hive 脚本。您可以使用标准 (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

关于mysql - 将数据从 MySQL 复制到 Amazon DynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28104424/

相关文章:

amazon-web-services - 具有多个 AWS lambda 函数的 Claudia.js

amazon-web-services - 用于 Lambda 无服务器架构的 AWS DynamoDB 与 RDS

amazon-dynamodb - CloudFormation 坚持认为我的 DynamoDB 创建 JSON 无效..但我不明白如何

java - DynamoDBMappingException : no mapping for HASH key

mysql - mysql中的特定日期格式

mysql - 多表删除时出现语法错误

java - sql "between statement"不适用于 spring

mysql:需要搜索数据的代码

amazon-web-services - 要删除共享或公共(public)快照,您必须使用登录拥有该快照的 AWS 账户

mysql - 参数列表太长 - Apache