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

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

您可以使用 Athena Data Connector for External Hive Metastore (Preview) 查询使用 Apache Hive 元数据仓的 Amazon S3 中的数据集。无需将元数据迁移到 AWS Glue 数据目录。在 Athena 管理控制台中,配置一个 Lambda 函数以与私有 VPC 中的 Hive 元数据仓通信,然后连接它。对于 Lambda 函数代码,您可以使用 Athena 的默认实施 – 外部 Hive 元数据仓的 Athena 数据源连接器,或者提供您自己的连接器。

注意事项和限制

  • 您不能使用具有外部 Hive 元存储、UDF 或其他数据连接器的视图。

权限

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

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

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

  • Athena – 用于检查查询状态并防止过扫描。

  • AWS Secrets Manager

  • AWS Glue 您的连接器是将 AWS Glue 用于补充元数据还是用于主元数据。

  • AWS Key Management Service

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

将 Athena 连接到 Apache Hive 元数据仓

要将 Athena 连接到 Apache Hive 元数据仓,您必须创建和配置 Lambda 函数。对于基本实现,您可以从 Athena 管理控制台执行所有必需步骤。

将 Athena 连接到 Hive 元数据仓

  1. https://console.amazonaws.cn/athena/ 打开 Athena 控制台。

  2. 选择 Connect data source (连接数据源)

  3. Connect data source (连接数据源) 页面上的 Choose a metadata catalog (择元数据目录) 中,选择 Apache Hive metastore (Apache Hive 元数据仓)

  4. 选择 Next

  5. Connection details (连接详细信息) 页面上的 Lambda function (Lambda 函数) 中,单击 Create Lambda function (创建 Lambda 函数)

  6. Create Lambda function (创建 Lambda 函数) 对话框中,输入 Lambda 函数的以下信息。要使用默认实现,请接受 Amazon S3 中的函数代码位置和 Lambda 处理程序的默认值。

    • Lambda function name (Lambda 函数名称):提供函数的名称。例如,myHiveMetastore

    • Lambda execution role (Lambda 执行角色) – 选择 IAM 角色或单击 Create a new role (创建新角色) 以创建角色。

    • Function code (函数代码) – Lambda 函数 JAR 文件在 Amazon S3 中的位置。使用默认值或输入自定义 JAR 文件的位置。

    • Lambda handler (Lambda 处理程序) – 实现 Hive 连接器的 JAR 文件中的方法。使用默认值,或将其替换为自定义代码中的处理程序。

    • Hive metastore (HMS) URI (Hive 元数据仓 (HMS) URI) – 输入您的 Hive 元数据仓主机的名称,该主机在端口 9083 使用 Thrift 协议,语法为 thrift://<host_name>:9083

    • Spill location in S3 (S3 中的溢出位置) – 在此账户中指定 Amazon S3 位置,以便在 Lambda 函数响应大小超过 4MB 时保存溢出元数据。

    • Virtual Private (VPC) (虚拟专用 (VPC)) – 选择包含您的 Hive 元数据仓的 VPC。

    • Subnets (子网) – 选择 Lambda 用于设置 VPC 配置的 VPC 子网。

    • Security Groups (安全组) – 选择 Lambda 用于设置 VPC 配置的 VPC 安全组。

    • Memory (内存) – 指定从 128MB 到 3008MB 的值。Lambda 函数分配与您配置的内存量成比例的 CPU 周期。

    • Timeout (超时) – 指定从 1 秒到 15 分钟 59 秒的值。默认值为 3 秒。

  7. 单击 CreateConnection details (连接详细信息) 页面通知您函数已创建。操作完成后,您的函数名称在 Choose a function name (选择函数名称) 框中可用,并且会显示您的 Lambda 函数 ARN。

  8. 对于 Catalog name (目录名称),请输入 SQL 查询中的数据源要使用的唯一名称。名称最多可以包括 127 个字符,并且在您的账户中必须是唯一的。它在创建后即无法更改。有效字符包括 a-z、A-Z、0-9、_(下划线)、@(& 符)和 -(连字符)。

  9. 单击 Connect (连接) 以将 Athena 连接到您的数据源。

    Data sources (数据源) 页面显示目录名称列表中的连接器。您现在可以使用指定的 Catalog name (目录名称) 以在 SQL 查询中引用 Hive 元数据仓。使用以下示例中的语法,其中 MyHiveMetastore 是您之前指定的目录名称。

    SELECT * FROM MyHiveMetastore.CustomerData.customers;