用最专业的眼光看待互联网
立即咨询Amazon DynamoDB 是一款完全托管的无服务器键值 NoSQL 数据库,旨在支持任何规模的高性能应用。DynamoDB 提供内置的安全性、连续备份、自动多区域复制、内存缓存和数据导入导出工具等功能。其可伸缩性和灵活的数据模式使得 DyanmoDB 适用于多种案例,包括大规模的 Web 和移动应用、低延迟的元数据存储、高流量的零售网站、物联网IoT、时间序列数据和在线游戏等。
存储在 DynamoDB 中的数据为有价值的商业智能BI洞察提供了基础。为了使数据分析师和其他用户可以轻松访问数据,可以使用 Amazon Athena。Athena 是一项无服务器的交互式服务,可以从多种异构格式的数据源中查询数据,无需任何配置工作。Athena 通过开放源代码的 Amazon Athena DynamoDB 连接器 访问存储在 DynamoDB 中的数据。表的元数据如列名和数据类型通过 AWS Glue 数据目录 进行存储。
最后,为了可视化 BI 洞察,您可以使用 Amazon QuickSight,这是一项云驱动的商业分析服务。QuickSight 简化了组织构建可视化、进行临时分析,并快速从数据中获取商业洞察的过程,无论何时何地都可以在任何设备上访问。其 生成性 BI 功能 使您能够以自然语言询问数据,而无需编写 SQL 查询或学习 BI 工具。
本篇文章将展示如何使用 Athena DynamoDB 连接器轻松地通过 SQL 查询 DynamoDB 中的数据并在 QuickSight 中可视化洞察。
以下图示展示了解决方案架构。
Athena DynamoDB 连接器在预先构建的无服务器 AWS Lambda 函数中运行。您无需编写任何代码。AWS Glue 提供来自 DynamoDB 表的补充元数据。特别地,会运行一个 AWS Glue 爬虫 来推断并存储 DynamoDB 表格式、架构及相关属性至 Glue 数据目录。使用 Athena 编辑器测试连接器并通过 SQL 查询进行分析。QuickSight 使用 Athena 连接器可视化来自 DynamoDB 的 BI 洞察。
本操作演示使用了来自 DynamoDB 开发者指南样本数据文件 中的 ProductCatalog 表的数据。
在开始之前,您需要满足以下几个前提条件:
一个 AWS 账户请参阅 如何创建和激活新的 AWS 账户 创建新账户一个 QuickSight 账户有关注册说明,请参见 注册 Amazon QuickSight 订阅熟悉 AWS 身份与访问管理 (IAM)Athena DynamoDB 连接器由 AWS 提供的预构建的无服务器 Lambda 函数组成,它与 DynamoDB 通信,以便您可以使用 Athena 通过 SQL 查询您的表。此连接器可在 AWS 无服务器应用程序库 中找到,并用于创建数据源以便后续分析和可视化使用。设置连接器的步骤如下:
在 Athena 控制台中,选择导航窗格中的 数据源。选择 创建数据源。在搜索框中搜索并选择 Amazon DynamoDB。选择 下一步。在 数据源详细信息 下,输入一个名称。请注意,这个名称应该唯一,并且在您查询 Athena 数据源时会被引用。在 连接详细信息 下,选择 创建 Lambda 函数。这将把您带到 Lambda 控制台的 Lambda 应用程序 页面。请不要关闭 Athena 数据源创建标签页;稍后您将返回该页。
向下滚动到 应用程序设置 ,输入以下参数的值其余参数保持默认:SpillBucket 指定用于存储超出 Lambda 函数响应大小限制的数据的 Amazon 简单存储服务 (Amazon S3) 桶名称。有关创建 S3 桶的信息,请参阅 创建桶。AthenaCatalogName 用于要创建的 Lambda 函数的小写名称。选中确认框,选择 部署。在转至下一步之前,请等待部署完成。
返回到 Athena 数据源创建标签页。在 连接详细信息 下,选择刷新图标并选择您创建的 Lambda 函数。选择 下一步。审核并选择 创建数据源。Athena 连接器已有内置推断功能来发现您的数据源的架构和表属性,但是此功能有限。为了准确发现 DynamoDB 表的元数据并在数据随着时间的发展中集中管控架构,连接器与 AWS Glue 集成。
为此,运行 AWS Glue 爬虫以自动确定存储在 DynamoDB 表中的原始数据的格式、架构及相关属性,并将结果元数据写入 Glue 数据库。Glue 数据库包含 表,这些表保存来自不同数据存储的元数据,与数据的实际位置无关。Athena 连接器随后会引用 Glue 表并检索相应的 DynamoDB 元数据以启用查询。
请完成以下步骤以创建 Glue 数据库:
在 AWS Glue 控制台中,导航到 数据目录 下的 数据库。选择 添加数据库如果您已有现成的数据库,也可以编辑它。在 名称 中,输入数据库名称。在 位置 中,输入字符串字面值 dynamodbflag。此关键词表明数据库包含连接器可以使用的补充元数据的表。选择 创建数据库。根据安全最佳实践,建议您为您的数据目录启用静态加密。有关详细信息,请参阅 加密您的数据目录。
完成以下步骤以创建和运行 Glue 爬虫:
在 AWS Glue 控制台中,导航到 数据目录 下的 爬虫。选择 创建爬虫。输入爬虫名称,并选择 下一步。在 数据源 中,选择 添加数据源。在 数据源 下拉菜单中,选择 DynamoDB。在 表名称 中,输入您的 DynamoDB 表的名称字符串字面值。选择 添加 DynamoDB 数据源。选择 下一步。在 IAM 角色 中,选择 创建新 IAM 角色。输入角色名称并选择 创建。这将自动创建一个 IAM 角色,该角色信任 AWS Glue 并具有访问爬虫目标的权限。选择 下一步。在 目标数据库 中,选择之前创建的数据库。选择 下一步。审核并选择 创建爬虫。在新创建的爬虫页面上,选择 运行爬虫。爬虫运行时间取决于您的 DynamoDB 表的大小和属性。您可以在 爬虫运行 下找到爬虫运行详细信息。
当您的爬虫运行状态显示为 已完成 时,请按照以下步骤验证输出元数据:
魔戒官网梯子在 AWS Glue 控制台中,选择导航窗格中的 表。在这里,您可以确认爬虫运行的结果新增了一张表到数据库中。导航到新创建的表并查看 架构 选项卡。此选项卡显示从 DynamoDB 表推断出的列名、数据类型及其他参数。如果需要,选择 编辑架构 来编辑架构。选择 高级属性。在 表属性 下,验证爬虫自动创建并将 classification 键的值设置为 dynamodb。这告知 Athena 连接器该表可以用于补充元数据。可选地,添加以下属性以正确目录和引用 AWS Glue 和 Athena 查询中的 DynamoDB 数据。这是由于不允许在 AWS Glue 表和列名称中使用大写字母,而在 DynamoDB 表和属性名称中则允许。如果您的 DynamoDB 表名称包含大写字母,请选择 操作 并 编辑表,并添加额外的表属性如下:键 sourceTable值 YourDynamoDBTableName如果您的 DynamoDB 表具有包含大写字母的属性,请添加额外的表属性如下:键 columnMapping值 yourcolumn1=YourColumn1 yourcolumn2=YourColumn2在 Athena DynamoDB 连接器部署完成并且 AWS Glue 表填充了补充元数据后,DynamoDB 表准备好进行分析。本文例子使用 Athena 编辑器对 ProductCatalog 表进行 SQL 查询。有关与 Athena 互动的其他选项,请参阅 访问 Athena。
完成以下步骤以测试连接器:
打开 Athena 查询编辑器。如果这是您在当前 AWS 区域访问 Athena 控制台的首次访问,请完成以下步骤。在您能够执行 Athena 查询之前,这是一个前提条件。有关详细信息,请参阅 入门。在导航窗格中选择 查询编辑器 以打开编辑器。导航到 设置 并选择 管理,以在 Amazon S3 中设置查询结果的位置。在 数据 中,选择您创建的数据源和数据库您可能需要选择刷新图标以进行同步。选定数据库下的表将在 表 下出现。您可以选择表名称以显示表列列表和数据类型。通过 SELECT 语句从您的表拉取数据以测试连接器。当您运行 Athena 查询时,您可以将 Athena 数据源、数据库和表参考为 ltdatasourcenamegtltdatabasegtlttablenamegt。检索的记录将在 结果 下显示。为了增加安全性,请参阅 加密存储在 Amazon S3 中的 Athena 查询结果 以加密静态的查询结果。
在此示例中,我们运行了 SELECT 语句以验证流程。您可以参考 Athena 的 SQL 参考 构建更复杂的查询和分析。
QuickSight 允许构建现代互动仪表板、分页报告、嵌入分析和自然语言查询,通过统一的 BI 解决方案生成。此步骤中,我们使用 QuickSight 从 DynamoDB 表生成可视化洞察,连接到之前创建的 Athena 数据源。
完成以下步骤以授予 QuickSight 对资源的访问权限:
在 QuickSight 控制台中,选择头像图标,然后选择 管理 QuickSight。在导航窗格中,选择 安全性与权限。在 QuickSight 对 AWS 服务的访问 下,选择 管理。QuickSight 可能会要求您切换到管理您账户中用户和组的区域。要更改当前区域,请在 QuickSight 控制台中导航到头像图标,然后选择您希望切换的区域。对于 IAM 角色,选择 使用 QuickSight 管理角色默认。接下来的说明假设使用的是默认的 QuickSight 管理角色。如果不是,请确保更新现有角色以具有相同的效果。
在 允许访问和自动发现这些资源 下选择 IAM 和 Amazon S3。对于 Amazon S3,选择 选择 S3 桶。选择您在之前为连接器部署的 Lambda 函数指定的溢出桶以及您为 Amazon S3 中 Athena 查询结果位置所指定的桶。对于两个桶,选择 Athena 工作组的写权限。选择 Amazon Athena。在弹出窗口中,选择 下一步。选择 Lambda,然后选择之前用于 Athena 数据源连接器的 Lambda 函数的 Amazon 资源名称 (ARN)。选择 完成。选择 保存。完成以下步骤以创建 Athena 数据集:
在 QuickSight 控制台中,选择用户资料并切换到您部署 Athena 数据源的区域。返回 QuickSight 主页。在导航窗格中选择 数据集。选择 新数据集。对于 创建数据集,选择 Athena。在 数据源名称 中输入一个名称并选择 验证连接。当连接显示为 已验证 时,选择 创建数据源。在 目录、数据库 和 表 下,选择之前创建的 Athena 数据源、AWS Glue 数据库和 AWS Glue 表。选择 选择。在 完成数据集创建 页面,选择 导入至 SPICE 以便更快分析。选择 可视化