使用现有 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 元存储

先决条件

克隆并构建 Lambda 函数

Athena 参考实现的函数代码是一个位于 GitHub 上的 Maven 项目,具体地址为 awslabs/aws-athena-hive-metastore。有关项目的详细信息,请参阅 GitHub 上相应的自述文件或本文档中的 参考实现 主题。

克隆和构建 Lambda 函数代码

  1. 输入以下命令以克隆 Athena 引用实现:

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

    mvn clean install

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

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

    在下一部分中,您将使用 Amazon Lambda 控制台将此文件上载到您的亚马逊云科技账户。

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

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

创建 Lambda 函数

在此步骤中,您将在 Amazon Lambda 控制台中创建一个使用现有 IAM 角色的函数。

要创建使用现有 IAM 角色的 Lambda 函数

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

  2. 在导航窗格中,选择 Functions(函数)。

  3. 选择 Create function (创建函数)

  4. 选择 Author from scratch (从头开始创作)

  5. Function name(函数名称)中,输入 Lambda 函数的名称(例如 EHMSBasedLambda)。

  6. 对于 Runtime(运行时),请选择 Java 8

  7. Permissions(权限)下,展开 Change default execution role(更改默认执行角色)。

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

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

  10. 展开 Advanced settings(高级设置)。

  11. 选择 Enable Network(启用网络)。

  12. 对于 VPC,请选择您的函数将有权访问的 VPC。

  13. 对于 Subnets(子网),选择 Lambda 要使用的 VPC 子网。

  14. 对于 Security groups(安全组),选择 Lambda 要使用的 VPC 安全组。

  15. 选择 Create function(创建函数)。Amazon Lambda 控制台,然后打开函数的配置页面并开始创建函数。

上载代码并配置 Lambda 函数

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

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

  1. 在 Lambda 控制台中,确保您位于指定函数页面的 Code(代码)选项卡上。

  2. 对于 Code source(代码源),选择 Upload from(上传格式),然后选择 .zip or .jar file(.zip 或 .jar 文件)。

  3. 上载您之前生成的 hms-lambda-func-1.0-SNAPSHOT-withdep.jar 文件。

  4. 在 Lambda 函数页面上,选择配置选项卡。

  5. 从左侧窗格中选择 Environment variables(环境变量)。

  6. Environment variables (环境变量) 部分中,选择 Edit (编辑)

    
                            选择 Edit(编辑)为 Lambda 函数编辑环境变量。
  7. Edit environment variables(编辑环境变量)页面上,使用 Add environment variable(添加环境变量)选项,添加以下环境变量键和值:

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

      thrift://<host_name>:9083
    • SPILL_LOCATION — 在亚马逊云科技账户中指定 Amazon S3 位置,以便在 Lambda 函数响应大小超过 4MB 时保存溢出元数据。

      
                                    为 Lambda 函数环境变量指定值。
  8. 选择保存

此时,您已准备好将 Athena 配置为使用 Lambda 函数连接到 Hive 元数据仓。要查看步骤,请参阅 配置 Athena 使用部署的 Hive 元存储连接器