使用 Amazon Athena 联合查询 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon Athena 联合查询

如果您在 Amazon S3 以外的源中拥有数据,则可以使用 Athena 联合查询来查询数据或构建从多个数据源提取数据并将其存储在 Amazon S3 中的管道。使用 Athena 联合查询,您可以跨存储在关系数据源、非关系数据源、对象数据源和自定义数据源中的数据运行 SQL 查询。

使用 Athena数据源连接器运行Amazon Lambda运行联合查询。数据源连接器是一段代码,可以在目标数据源和 Athena 之间进行转换。您可以将连接器视为 Athena 查询引擎的扩展。预构建的 Athena 数据源连接器存在于诸如 Amazon CloudWatch Logs、Amazon DynamoDB、Amazon DocumentDB 和 Amazon Documents DB 兼容的关系数据源(如 MySQL 和 Apache 2.0 许可证下的 PostgreSQL)之类的数据源。您还可以使用 Athena 查询联合 SDK 编写自定义连接器。要选择、配置数据源连接器并将其部署到您的账户,可以使用 Athena 和 Lambda 控制台或Amazon Serverless Application Repository。部署数据源连接器后,连接器将与可以在 SQL 查询中指定的目录相关联。您可以使用单个查询来组合来自多个目录的 SQL 语句和跨多个数据源。

针对某个数据源提交查询时,Athena 调用相应的连接器以识别需要读取的表部分、管理并行度以及下移筛选器谓词。根据提交查询的用户,连接器可以提供或限制对特定数据元素的访问。连接器使用 Apache Arrow 作为查询中请求的数据的返回格式,这使得连接器能够以 C、C++、Java、Python 和 Rust 等语言实现。由于连接器是在 Lambda 中处理的,因此它们可用于访问来自云中的任何数据源或可从 Lambda 访问的本地数据源的数据。

要编写自己的数据源连接器,您可以使用 Athena 查询联合 SDK 自定义 Amazon Athena 提供和维护的预构建连接器之一。您可以修改来自 GitHub 存储库的源代码的副本,然后使用连接器发布工具创建您自己的 Amazon Serverless Application Repository 软件包。

注意

第三方开发人员可能已经使用 Athena 查询联合 SDK 来写入数据源连接器。有关这些数据源连接器的支持或许可问题,请与您的连接器提供商合作。这些连接器不受测试或支持Amazon。

有关 Athena 编写和测试的数据源连接器的列表,请参阅使用 Athena 数据源连接器

有关编写自己的数据源连接器的信息,请参阅 GitHub 上的示例 Athena 连接器

注意事项和限制

数据源连接器可能需要访问以下资源才能正常工作。如果您使用预构建的连接器,请检查连接器的信息,以确保您已正确配置 VPC。此外,请确保运行查询和创建连接器的 IAM 委托人具有执行所需操作的权限。有关更多信息,请参阅 允许 Athena 联合查询的示例 IAM 权限策略

  • Amazon S3— 除了将查询结果写入 Amazon S3 中的 Athena 查询结果位置之外,数据连接器还会写入 Amazon S3 中的溢出存储桶。此 Amazon S3 位置的连接和权限是必需的。

  • Athena— 数据源需要连接到 Athena,反之亦然,以便检查查询状态并防止过扫描。

  • Amazon Glue Data Catalog— 如果您的连接器将数据目录用于补充元数据或主元数据,则需要连接和权限。

有关已知问题和限制的最新信息,请参阅 aws-athena-query-federation GitHub 存储库中的限制和问题

Videos

观看以下视频,了解有关使用 Athena 联合查询的更多信息。

视频: 在亚马逊 Amazon QuickSight 中分析 Amazon Athena 中的联合查询结果

以下视频说明了如何在 Amazon QuickSight 中分析 Athena 联合查询的结果。

视频: 游戏分析管道

以下视频演示了如何部署可扩展的无服务器数据管道,以便使用 Amazon Athena 联合查询从游戏和服务中获取、存储和分析遥测数据。