使用 Amazon EMR 导出、导入、查询和连接 DynamoDB 中的表格
注意
Amazon EMR-DynamoDB 连接器在 GitHub 上是开源的。有关更多信息,请参阅 https://github.com/awslabs/emr-dynamodb-connector
DynamoDB 是一项完全托管的 NoSQL 数据库服务,提供快速而可预测的性能,能够实现无缝扩展。开发人员可以创建数据库表,并可以不受限制地增加请求流量或存储空间。DynamoDB 可自动将表的数据和流量分布到足够多的服务器中,以便处理客户指定的容量请求和数据存储量,同时还能保持性能一致、访问高效。使用 Amazon EMR 和 Hive 可以快速有效地处理大量数据,如 DynamoDB 中存储的数据。有关 DynamoDB 的更多信息,请参阅 Amazon DynamoDB 开发人员指南。
Apache Hive 是一种可用于查询 map reduce 集群的软件层,使用的是一种名为 HiveQL 的类似 SQL 的简化查询语言。它在 Hadoop 架构的顶层运行。有关 Hive 和 HiveQL 的更多信息,请转至 HiveQL 语言手册
您可将 Amazon EMR 与自定义版本的 Hive(包含与 DynamoDB 的连接)配合使用来对存储在 DynamoDB 中的数据执行操作:
-
将 DynamoDB 数据加载到 Hadoop Distributed File System(HDFS)中并用作输入 Amazon EMR 集群的数据。
-
使用类似 SQL 语句(HiveQL)查询实时 DynamoDB 数据。
-
连接 DynamoDB 中存储的数据并导出这些数据或查询连接的数据。
-
将存储在 DynamoDB 中的数据导出到 Amazon S3。
-
将存储在 Amazon S3 中的数据导入到 DynamoDB。
注意
Amazon EMR-DynamoDB 连接器不支持配置为使用 Kerberos 身份验证的集群。
为了执行以下每项任务,您将启动 Amazon EMR 集群,指定 DynamoDB 中数据的位置,并发出 Hive 命令来操作 DynamoDB 中的数据。
有多种启动 Amazon EMR 集群的方法:您可以使用 Amazon EMR 控制台、命令行界面(CLI),或者使用 AWS SDK 或 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 吞吐量设置的详细信息,请参阅预置吞吐量。
如果表配置为按需模式,则应先将表更改回预配置模式,再运行导出或导入操作。管道需要吞吐量比率才能计算 DynamoDBtable 中要使用的资源。按需模式删除预置的吞吐量。要预置吞吐量容量,您可以使用 Amazon CloudWatch Events 指标来评估表使用的聚合吞吐量。