使用现有 IAM 执行角色将 Athena 连接到 Hive 元数据仓库 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用现有 IAM 执行角色将 Athena 连接到 Hive 元数据仓库

要使用使用现有 IAM 角色的 Lambda 函数将外部 Hive 元数据仓连接到 Athena,您可以使用 Athena 的 Athena 连接器引用实现外部 Hive 元数据仓。

这三个主要步骤如下所示:

  1. 克隆和构建— 克隆 Athena 引用实现并生成包含 Lambda 函数代码的 JAR 文件。

  2. Amazon Lambda控制台— 在Amazon Lambda控制台,创建 Lambda 函数,为其分配现有 IAM 执行角色,然后上传您生成的函数代码。

  3. Amazon Athena 控制台— 在 Amazon Athena 控制台中,创建一个数据目录名称,您可以使用该名称在 Athena 查询中引用您的外部 Hive 元数据仓。

如果您已拥有创建自定义 IAM 角色的权限,则可以使用更简单的工作流程,该工作流程使用 Athena 控制台和Amazon Serverless Application Repository创建和配置 Lambda 函数。有关更多信息,请参阅将 Athena 连接到 Apache Hive 元存储

Prerequisites

克隆并构建 Lambda 函数

Athena 参考实现的函数代码是一个位于 GitHub 的 Maven 项目awslab/aw-雅典-蜂巢元数据库。有关项目的详细信息,请参阅 GitHub 上相应的自述文件或参考实施主题。

克隆和构建 Lambda 函数代码

  1. 输入以下命令克隆 Athena 参考实施:

    git clone https://github.com/awslabs/aws-athena-hive-metastore
  2. 运行以下命令构建.jar文件中的 Lambda 函数:

    mvn clean install

    项目构建成功后,以下.jar文件在项目的目标文件夹中创建:

    hms-lambda-func-1.0-SNAPSHOT-withdep.jar

    在下一部分中,您将使用Amazon Lambda控制台将此文件上传到您的 Amazon Web Services 账户。

创建和配置 Lambda 函数在Amazon Lambda控制台

在本节中,您将使用Amazon Lambda控制台创建使用现有 IAM 执行角色的函数。为函数配置 VPC 后,您可以上传函数代码并配置该函数的环境变量。

创建 Lambda 函数

在此步骤中,您将在Amazon Lambda控制台,使用现有 IAM 角色。

创建 Lambda 函数(使用现有 IAM 角色)

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Lambda 控制台:https://console.aws.amazon.com/lambda/

  2. 在导航窗格中,选择函数

  3. 选择创建函数

  4. 选择 Author from scratch

  5. 适用于函数名称中,输入 Lambda 函数的名称(例如,EHMSBasedLambda)。

  6. 适用于运行时中,选择Java 8

    
                            在 Lambda 控制台中创建函数。
  7. UNDERPermissions (权限),展开更改默认执行角色

  8. 对于 Execution role (执行角色),选择 Use an existing role (使用现有角色)

  9. 适用于现有角色中,选择 Lambda 函数将用于 Athena 的 IAM 执行角色(此示例使用名为AthenaLambdaExecutionRole)。

    
                            为 Lambda 函数选择现有 IAM 执行角色。
  10. 展开 Advanced settings (高级设置)

  11. 适用于VPC下,选择您的函数将有权访问的 VPC。

  12. 适用于Subnets中,选择 Lambda 要使用的 VPC 子网。

  13. 适用于安全组中,选择 Lambda 要使用的 VPC 安全组。

  14. 选择创建函数。这些区域有:Amazon Lambda控制台,然后打开函数的配置页面并开始创建函数。

    
                            指定 Lambda 函数的 VPC 详细信息。

上传代码并配置 Lambda 函数

当控制台通知您已成功创建函数时,您就可以上传函数代码并配置其环境变量。

上传 Lambda 函数代码并配置其环境变量

  1. 在 Lambda 控制台中,如有必要,导航到函数的页面。

  2. 适用于函数代码中,选择操作,然后选择上传 .zip 或 .jar 文件

    
                            上传 Lambda 函数的函数代码。
  3. 上传hms-lambda-func-1.0-SNAPSHOT-withdep.jar文件。

  4. 环境变量部分,选择函数配置页面的编辑

    
                            选择编辑编辑 Lambda 函数的环境变量。
  5. 在存储库的编辑环境变量页面上,添加以下环境变量键和值:

    • HMS_URIS— 使用以下语法输入您的 Hive 元数据仓主机的 URI,该主机在端口 9083 使用 Thrift 协议。

      thrift://<host_name>:9083.
    • 溢出位置— 在您的 Amazon Amazon Web Services 账户中指定一个 Amazon S3 位置,以便在 Lambda 函数响应大小超过 4MB 时保存溢出元数据。

      
                                    为 Lambda 函数环境变量指定值。
  6. 选择 Save

将 Athena Connect 到您的蜂巢元数据存储

现在,您可以使用 Athena 控制台来准备 Athena 使用您的 Hive 元数据仓。在此步骤中,您将创建要在引用外部 Hive 元数据仓的 Athena 查询中使用的数据目录名称。

将 Athena 连接到您的蜂巢元数据库

  1. https://console.aws.amazon.com/athena/ 打开 Athena 控制台。

  2. 请执行下列操作之一:

    • 在查询编辑器导航窗格中,选择Connect 数据源

      
                                选择 Connect data source (连接数据源)。
    • 选择数据源选项卡,然后选择Connect 数据源

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

  4. 选择 Next

  5. 在存储库的连接详细信息页面, 对于Lambda 函数,请使用选择 Lambda 函数选项来选择您创建的 Lambda 函数。

    
                        选择您创建的 Lambda 函数。

    一个新的Lambda 函数的 ARN条目显示 Lambda 函数的 ARN。

    
                        在 Athena 中创建要在 SQL 查询中使用的唯一数据目录名称。
  6. 适用于目录名称中,输入 SQL 查询中将使用的唯一名称,该名称将在引用 Hive 数据源。

    注意

    名称awsdatacataloghivejmx, 和system是 Athena 预留的,无法用于自定义目录名称。

  7. 选择 Connect (连接)。这将 Athena 连接到您的 Hive 元商店目录。

  8. 您现在可以使用指定的 Catalog name (目录名称) 以在 SQL 查询中引用 Hive 元数据仓。在 SQL 查询中,使用以下示例语法,并将 ehms-catalog 替换为您之前指定的目录名称。

    SELECT * FROM ehms-catalog.CustomerData.customers;
  9. 要查看、编辑或删除您创建的数据源,请参阅管理数据源