使用 Amazon EMR 导出、导入、查询和连接 DynamoDB 中的表格 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

注意

亚马逊 EMR-DynamoDB Connector 已在上开源。 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 语言手册。有关 Hive 和 Amazon EMR 的更多信息,请参阅Apache Hive

您可将 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 集群:您可以使用亚马逊 EMR 控制台、命令行界面 (CLI),也可以使用软件开发工具包 Amazon 或亚马逊 EMR API 对集群进行编程。您还可以选择交互运行 Hive 集群还是从脚本运行。在本节中,我们将介绍如何从 Amazon EMR 控制台和 CLI 启动交互式 Hive 集群。

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

警告

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

如果表配置为按需模式,则应先将表更改回预配置模式,再运行导出或导入操作。管道需要吞吐量比率才能计算 DynamoDBtable 中要使用的资源。按需模式删除预置的吞吐量。要预配置吞吐容量,您可以使用 Amazon Ev CloudWatch ents 指标来评估表使用的总吞吐量。