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

使用 Amazon Athena 联合查询

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

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

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

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

注意

第三方开发人员可能已经使用 Athena Query Federation 软件开发工具包来写入数据源连接器。有关这些数据源连接器的支持或许可问题,请与您的连接器提供商联系。这些连接器不受 Amazon 的测试或支持。

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

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

注意事项和限制

  • 引擎版本 — Athena Federated Query 仅在 Athena 引擎版本 2 中受支持。有关 Athena 引擎版本的更多信息,请参阅 Athena 引擎版本控制。有关支持 Athena 引擎版本 2 的 Amazon 区域列表,请参阅 Athena 引擎版本 2

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

  • 写入操作 – 写入操作不受支持,例如 INSERT INTO。尝试这样做可能会导致出现错误消息 This operation is currently not supported for external catalogs(外部目录目前不支持此操作)。

  • 定价 — 有关定价信息,请参阅 Amazon Athena 定价

    JDBC 驱动程序 — 若要将 JDBC 驱动程序与联合查询或外部 Hive 元数据仓结合使用,请在 JDBC 连接字符串中加入 MetadataRetrievalMethod=ProxyAPI。有关 JDBC 驱动程序的信息,请参阅 通过 JDBC 驱动程序使用 Athena

  • Secrets Manager — 要将 Athena Federated Query 功能与 Amazon Secrets Manager 结合使用,您必须为 Secrets Manager 配置 Amazon VPC 私有端点。有关更多信息,请参阅《Amazon Secrets Manager 用户指南》中的 创建 Secrets Manager VPC 私有端点

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

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

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

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

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