Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Amazon EMR 导出、导入、查询和联接 DynamoDB 中的表格

注意

Amazon EMR-DynamoDB 连接器在 GitHub 上是开源的。有关更多信息,请参阅 https://github.com/awslabs/emr-dynamodb-connector

DynamoDB 是一种完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。开发人员可以创建数据库表,并可以不受限制地增加请求流量或存储空间。DynamoDB 可自动将表的数据和流量分布到足够多的服务器中,以便处理客户指定的容量请求和数据存储量,同时还能保持性能一致、访问高效。使用 Amazon EMR 和 Hive 可以快速有效地处理大量数据,如 DynamoDB 中存储的数据。有关 DynamoDB 的详细信息,请转到 DynamoDB Developer Guide

Apache Hive 是一种可用于查询 map reduce 集群的软件层,使用的是一种名为 HiveQL 的类似 SQL 的简化查询语言。它在 Hadoop 架构的顶层运行。有关 Hive 和 HiveQL 的更多信息,请转至 HiveQL 语言手册。有关 Hive 和 Amazon EMR 的更多信息,请参阅 Apache Hive

您可将 Amazon EMR 与自定义版本的 Hive (包含与 DynamoDB 的连接) 配合使用来对存储在 DynamoDB 中的数据执行操作:

  • 将 DynamoDB 数据加载到 Hadoop 分布式文件系统 (HDFS) 中并用作输入 Amazon EMR 集群的数据。

  • 使用类 SQL 语句 (HiveQL) 查询实时 DynamoDB 数据。

  • 连接 DynamoDB 中存储的数据并导出这些数据或查询连接的数据。

  • 将 DynamoDB 中存储的数据导出到 Amazon S3。

  • 将 Amazon S3 中存储的数据导入 DynamoDB。

为执行下列每个任务,您将启动 Amazon EMR 集群、指定数据在 DynamoDB 中的位置,并发出 Hive 命令来操控 DynamoDB 中的数据。

有多种启动 Amazon EMR 集群的方法:您可以使用 Amazon EMR 控制台、命令行界面 (CLI),或者使用 AWS 开发工具包或 Amazon EMR API 来对集群进行编程。您还可以选择交互运行 Hive 集群还是从脚本运行。在本节中,我们将介绍如何从 Amazon EMR 控制台和 CLI 启动交互式 Hive 集群。

通过交互的方式使用 Hive 是测试查询性能和调试应用程序的良好方式。确定将定期运行的 Hive 命令集之后,请考虑创建一个 Hive 脚本,让 Amazon EMR 来运行。

警告

DynamoDB 表上的 Amazon EMR 读取或写入操作不利于既定的预配置吞吐量,有可能增加预配置吞吐量例外情况出现的频率。对于大量请求,Amazon EMR 会使用指数回退实施重试,以管理 DynamoDB 表中的请求负载。如果您与其他流量同时运行 Amazon EMR 任务,就可能导致超出分配的预配置吞吐量级别。您可以查看 Amazon CloudWatch 中的 ThrottleRequests 指标来监控这一操作。如果请求负载过高,您可以重新启动集群,将 读取百分比设置写入百分比设置 设置为较低的值,从而限制 Amazon EMR 操作。有关 DynamoDB 吞吐量设置的详细信息,请参阅预配置吞吐量