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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

使用 Athena Data Connector for External Hive Metastore (Preview)

您可以使用外部 Hive 元存储的 Amazon Athena 数据连接器来查询 Amazon S3 中使用 Apache Hive 元存储的数据集。无需将元数据迁移到 AWS Glue 数据目录。在 Athena 管理控制台中,配置 Lambda 函数以与私有 VPC 中的 Hive 元存储进行通信,然后将它连接到元存储。从 Lambda 到 Hive 元存储的连接由私有 Amazon VPC 通道提供保护,并且不使用公共 Internet。您可以提供您自己的 Lambda 函数代码,也可以使用外部 Hive 元存储的 Athena 数据连接器的默认实施。

功能概览

利用外部 Hive 元存储的 Athena 数据连接器,您可以执行以下任务:

  • 使用 Athena 控制台注册自定义目录并使用这些目录运行查询。

  • 为不同的外部 Hive 元存储定义 Lambda 函数,并在 Athena 查询中联接它们。

  • 在同一 Athena 查询中使用 AWS Glue 数据目录 和您的外部 Hive 元存储。

  • 在查询执行上下文中指定目录作为当前默认目录。这样一来,便无需在查询中将目录名称置于数据库名称的前面。您可以使用 database.table,而不是使用语法 catalog.database.table

  • 使用各种工具运行引用外部 Hive 元存储的查询。您可以使用 Athena 控制台、AWS CLI、AWS 软件开发工具包、Athena API 以及更新的 Athena JDBC 和 ODBC 驱动程序。更新后的驱动程序支持自定义目录。

API 支持

Athena Data Connector for External Hive Metastore (Preview) 包含对目录注册 API 操作和元数据 API 操作的支持。

  • 目录注册 – 为外部 Hive 元存储和联合数据源注册自定义目录。

  • 元数据 – 使用元数据 API 为 AWS Glue 和任何注册到 Athena 目录提供数据库和表信息。

  • Athena JAVA 软件开发工具包客户端 – 在更新后的 Athena JAVA 软件开发工具包客户端上的 StartQueryExecution 操作中使用目录注册 API、元数据 API 并支持目录。

参考实施

Athena 提供连接到外部 Hive 元存储的 Lambda 函数的参考实施。参考实施在 GitHub 上作为 Athena Hive 元存储的开源项目提供。

参考实施在 AWS Serverless Application Repository (SAR) 中作为以下两种 AWS SAM 应用程序提供。您可以在 SAR 中使用这两种应用程序之一来创建您自己的 Lambda 函数。

  • AthenaHiveMetastoreFunction – Uber Lambda 函数 .jar 文件。

  • AthenaHiveMetastoreFunctionWithLayer – Lambda 层和 thin Lambda 函数 .jar 文件。

工作流程

下图说明了 Athena 如何与外部 Hive 元存储进行交互。


                Athena 如何与外部 Hive 元存储进行交互。

在此工作流程中,您的数据库连接的 Hive 元存储位于您的 VPC 中。您使用 Hive Server2 通过 Hive CLI 管理 Hive 元存储。

使用来自 Athena 的外部 Hive 元存储的工作流程包括以下步骤。

  1. 创建一个 Lambda 函数以将 Athena 连接到 VPC 中的 Hive 元存储。

  2. 为 Hive 元存储注册唯一目录名称,并在账户中注册相应的函数名称。

  3. 当您运行使用目录名称的 Athena DML 或 DDL 查询时,Athena 查询引擎将调用与目录名称关联的 Lambda 函数名称。

  4. 利用 AWS PrivateLink,Lambda 函数与 VPC 中的外部 Hive 元存储进行通信,并接收对元数据请求的响应。Athena 使用外部 Hive 元存储中的元数据,就像使用默认 AWS Glue 数据目录 中的元数据一样。

注意事项和限制

在使用 Athena Data Connector for External Hive Metastore (Preview) 时,请考虑以下几点:

  • 对外部 Hive 元存储的 DDL 支持仅限于以下语句。

    • DESCRIBE TABLE

    • SHOW COLUMNS

    • SHOW TABLES

    • SHOW SCHEMAS

    • SHOW CREATE TABLE

    • SHOW TBLPROPERTIES

    • SHOW PARTITIONS

  • 您可以拥有的已注册目录的最大数量为 1000。

  • 您可以使用 CTAS 从对外部 Hive 元存储的查询中创建 AWS Glue 表,但不能在外部 Hive 元存储上创建表。

  • 您可以使用 INSERT INTO 从对外部 Hive 元存储的查询中将数据插入 AWS Glue 表,但不能将数据插入外部 Hive 元存储中。

  • Hive 视图与 Athena 视图不兼容,且不受支持。

  • 无法对 Hive 元存储进行 Kerberos 身份验证。

权限

预构建和自定义数据连接器可能需要访问以下资源才能正常工作。检查您使用的连接器的信息,以确保您已正确配置 VPC。有关在 Athena 中运行查询和创建数据源连接器所需的 IAM 权限的信息,请参阅允许访问 Athena Data Connector for External Hive Metastore (Preview)允许 Lambda 函数访问外部 Hive 元存储

  • Amazon S3 – 除了将查询结果写入 Amazon S3 中的 Athena 查询结果位置之外,数据连接器还会写入到 Amazon S3 中的溢出存储桶。此 Amazon S3 位置的连接和权限是必需的。有关更多信息,请参阅本主题后面的 Amazon S3 中的溢出位置

  • Athena – 需要访问权限才能检查查询状态并防止过度扫描。

  • AWS Glue – 如果您的连接器将 AWS Glue 用于补充元数据或主元数据,则需要访问权限。

  • AWS Key Management Service

  • 策略 – 除了 AmazonAthenaFullAccess 托管策略,Hive 元数据仓、Athena 查询联合和 UDF 需要策略。有关更多信息,请参阅 Athena 中的 Identity and Access Management

Amazon S3 中的溢出位置

由于 Lambda 函数响应大小存在限制,因此,大于阈值的响应将溢出到您在创建 Lambda 函数时指定的 Amazon S3 位置。Athena 直接从 Amazon S3 中读取这些响应。

注意

Athena 不会删除 Amazon S3 上的响应文件。我们建议您设置保留策略以自动删除响应文件。