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

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

使用现有 Athena 执行角色将 IAM 连接到 Hive 元存储

要使用使用现有 Athena 角色的 Lambda 函数将外部 Hive 元存储连接到 IAM,您可以将 Athena 连接器的参考实施用于外部 Hive 元存储。Athena

三个主要步骤如下:

  1. 克隆和构建 克隆 参考实施并构建包含 – 函数代码的 JAR 文件。AthenaLambda

  2. 控制台AWS Lambda 控制台中,创建一个 – 函数,为其分配现有的 AWS Lambda 执行角色,并上传您生成的函数代码。LambdaIAM

  3. 控制台Amazon Athena 控制台中,创建一个数据目录名称,您可用于在 – 查询中引用外部 Hive 元存储。Amazon AthenaAthena

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

Prerequisites

克隆和构建 Lambda 函数

参考实施的函数代码是位于 Athenaawslabs/aws-athena-hive-metastoreGitHub 的 上的 Maven 项目。有关项目的详细信息,请参阅 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

    在下一节中,您将使用 AWS Lambda 控制台将此文件上传到您的 AWS 账户。

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

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

创建 Lambda 函数

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

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

  1. 通过以下网址登录 AWS 管理控制台并打开 AWS Lambda 控制台 (https://console.amazonaws.cn/lambda/)。

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

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

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

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

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

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

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

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

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

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

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

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

  14. 选择 Create function (创建函数)。控制台将打开您的函数的配置页面并开始创建您的函数。AWS Lambda

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

上传代码并配置 Lambda 函数

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

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

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

  2. 对于 Function code (函数代码),选择 Actions (操作),然后选择 Upload a .zip or .jar file (上传 .zip 或 .jar 文件)

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

  4. 在函数配置页面的 Environment variables (环境变量) 部分中,选择 Edit (编辑)

    
                            选择 Edit (编辑) 以编辑 Lambda 函数的环境变量。
  5. Edit environment variables (编辑环境变量) 页面上,添加以下环境变量键和值:

    • HMS_URIs 使用以下语法输入 Hive 元存储主机的 URI,该主机在端口 9083 上使用 Thrift 协议。–

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

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

将 Athena 连接到您的 Hive 元存储

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

将 Athena 连接到您的 Hive 元存储

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

  2. 执行以下任一操作:

    • 在查询编辑器导航窗格中,选择 Connect data source (连接数据源)

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

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

    
                        选择 Apache Hive metastore (Apache Hive 元存储)。
  4. 选择 Next (下一步)

  5. Connection details (连接详细信息) 页面上,对于 Lambda function (Lambda 函数),使用 Choose Lambda function (选择 Lambda 函数) 选项来选择您创建的 Lambda 函数。

    
                        选择您创建的 Lambda 函数。

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

    
                        创建唯一的数据目录名称,以便在 Athena 中的 SQL 查询中使用。
  6. 对于 Catalog name (目录名称),输入您在 SQL 查询中用于引用 Hive 数据源的唯一名称。

    注意

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

  7. 选择 Connect。这会将 Athena 连接到您的 Hive 元存储目录。

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

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