本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Athena 通过 SQL 查询 Amazon DynamoDB 表
Gavin Perrie、Ajit Ambike 和 Brad Yates,Amazon Web Services
Summary
如果您的数据包含除 Amazon Simple Storage Service(Amazon S3)之外的其他数据来源,可以使用联合查询来访问这些关系型、非关系型、对象型或自定义数据来源。此模式展示了如何使用 SQL 数据来源连接器,通过 Amazon Athena 配置对 Amazon DynamoDB 的联合查询访问。
您可以使用此模式执行以下操作:
使用 SQL 查询 DynamoDB 表。
在 Athena 中运行联合 SQL 查询,并将 DynamoDB 表与其他受支持的数据来源联接。
先决条件和限制
先决条件
一个 DynamoDB 表。
有一个 Athena 工作组设置为使用 Athena 引擎版本 2。有关说明,请参阅 Athena 文档。
一个 S3 存储桶,
AthenaDynamoDBConnectorAWS Lambda 函数可以在其中泄露数据。Lambda 函数必须与 S3 存储桶位于同一 AWS 区域。
如果是首次访问 Athena,则需要一个额外的 S3 存储桶用作查询结果的存储位置。有关说明,请参阅 Athena 文档。
限制
不支持诸如 INSERT INTO 之类的写入操作。
产品版本
架构
目标架构
下图显示了模式建立后的连接流程。用户将连接到 Amazon Athena 以提供查询。Athena 会将查询和目标传递给 DynamoDB 数据来源连接器 Lambda 函数,然后函数会检索数据并将其返回给 Athena。如果返回大量数据,Athena 会在打包并返回完整数据集之前,将临时结果存储在溢出存储桶中。

工具
AWS 服务
Amazon Athena 是一种交互式查询服务,可帮助您通过使用标准 SQL 直接分析 Amazon Simple Storage Service(Amazon S3)中的数据。此模式使用 Amazon Athena DynamoDB 连接器,该工具使用亚马逊
Athena Query Federation SDK 构建,并通过作为应用程序安装。 AWS Lambda AWS Serverless Application Repository Amazon DynamoDB 是一项完全托管式 NoSQL 数据库服务,可提供快速、可预测、可扩展的性能。
AWS Lambda 是一项计算服务,可帮助您运行代码,无需预调配或管理服务器。它只在需要时运行您的代码,并自动进行扩展,因此您只需为使用的计算时间付费。
Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
代码存储库
此模式的代码可在 GitHub Athena Query Federation 存储库中找到。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
部署 AthenaDynamoDBConnector 应用程序。 | 要部署 AthenaDynamoDBConnecter,请执行以下操作:
| AWS DevOps |
为 Athena 创建数据来源。 | 要创建数据来源,请执行以下操作:
| AWS DevOps |
使用 Athena 查询 DynamoDB 表。 | 要查询 DynamoDB 表,请执行以下操作:
| 应用程序开发人员 |
问题排查
| 问题 | 解决方案 |
|---|---|
查询失败: | 确保 Athena 溢出存储桶和 Lambda 函数是在同一个 AWS 区域中创建的。 |
新创建的数据来源未显示在 Athena 控制台上。 | Athena 数据目录是区域性的。确保已在尝试使用 Athena 的区域部署 |
不能对新创建的数据来源运行查询。 | 检查是否已设定查询结果位置。 |