使用Amazon Athena Federated Query (Preview) - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用Amazon Athena Federated Query (Preview)

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

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

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

要编写自己的数据源连接器,您可以使用 Athena Query Federation SDK 自定义 Amazon Athena 提供和维护的预构建连接器之一。您可以从 GitHub 存储库修改源代码的副本,然后使用 Connector Publish Tool (连接器发布工具) 创建您自己的 AWS Serverless Application Repository 程序包。

有关可用 Athena 数据源连接器的列表,请参阅 使用 Athena 数据源连接器

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

注意事项和限制

  • 可用区域 – 联合查询功能在 Athena、美国东部(弗吉尼亚北部)、亚太地区(孟买) 和 欧洲(爱尔兰) 区域中处于预览状态。美国西部(俄勒冈)

  • AmazonAthenaPreviewFunctionality工作组–To use this feature in preview, you must create an Athena workgroup named AmazonAthenaPreviewFunctionality and join that workgroup. For more information, see 管理工作组.

  • 视图 – 您不能将视图与联合数据源结合使用。

  • JDBC 驱动程序 – 要将 JDBC 驱动程序与联合查询或外部 Hive 元存储结合使用,请在 JDBC 连接字符串中包含 MetadataRetrievalMethod=ProxyAPI。有关 JDBC 驱动程序的信息,请参阅将 Athena 与 JDBC 驱动程序结合使用

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

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

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

  • AWS Glue 数据目录 – 如果连接器使用 Data Catalog 来获取补充元数据或主元数据,则需要连接和权限。

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