查询数据湖 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

查询数据湖

您可以在 Amazon S3 数据湖中查询数据。首先,您可以创建一个外部架构来引用在 Amazon Glue Data Catalog 中的外部数据库。然后,您可以在 Amazon S3 数据湖中查询数据。

演示:查询数据湖

要了解如何查询数据湖,请观看以下视频。

先决条件

您创建 IAM 角色以访问为 Amazon Lake Formation 启用的 Amazon Glue Data Catalog。

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies (策略)

    如果这是您首次选择 Policies,则会显示 Welcome to Managed Policies 页面。选择开始使用

  3. 选择 Create policy (创建策略)

  4. 选择以在 JSON 选项卡上创建策略。

  5. 粘贴在以下 JSON 策略文档中,该策略授予对 Data Catalog 的访问权限,但拒绝对 Lake Formation 的管理员权限。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftPolicyForLF", "Effect": "Allow", "Action": [ "glue:*", "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  6. 完成后,选择审核对策略进行审核。策略验证程序将报告任何语法错误。

  7. Review policy(查看策略)页面上,输入您正在创建的策略的 Name(名称)(例如,mydatalake_policy)。输入描述(可选)。查看策略摘要以查看您的策略授予的权限。然后,选择创建策略以保存您的工作。

    创建策略之后,您可以创建一个角色并应用该策略。

  8. 在 IAM 控制台的导航窗格中,选择 Roles,然后选择 Create role

  9. 对于选择受信任实体的类型,选择 Amazon 服务

  10. 选择 Amazon Redshift 服务来代入此角色。

  11. 为您的服务选择 Redshift Customizable (Redshift 可自定义)。然后选择 Next: Permissions (下一步:权限)

  12. 选择您创建的 mydatalake_policy 权限策略以附加到该角色。

  13. 选择 Next: Tagging (下一步: 标记)

  14. 选择 Next: Review (下一步:审核)

  15. 对于 Role name(角色名称),请输入角色的名称(例如,mydatalake_role)。

  16. (可选)对于 Role description (角色描述),输入新角色的描述。

  17. 检查该角色,然后选择创建角色

您授予对表的 SELECT 权限以在 Lake Formation 数据库中进行查询。

  1. 通过 https://console.aws.amazon.com/lakeformation/ 中打开 Lake Formation 控制台。

  2. 在导航窗格中,选择权限,然后选择 Grant (授予)

  3. 提供以下信息:

    • 对于 IAM 角色,选择您创建的 IAM 角色 myspectrum_role。运行 Amazon Redshift 查询编辑器时,它使用此 IAM 角色来获取数据权限。

      注意

      要授予对启用了 Lake Formation 的 Data Catalog 中的表的 SELECT 权限以进行查询,请执行以下操作:

      • 在 Lake Formation 中注册数据的路径。

      • 在 Lake Formation 中授予用户对该路径的权限。

      • 创建的表可在 Lake Formation 中注册的路径中找到。

    • 对于数据库,请选择您的 Lake Formation 数据库。

    • 对于,选择数据库中要查询的表。

    • 对于,选择 All Columns (所有列)

    • 选择 Select (选择) 权限。

  4. 选择保存

重要

作为最佳实践,仅允许通过 Lake Formation 权限访问底层 Amazon S3 对象。要防止未经批准的访问,请删除授予针对 Lake Formation 以外的 Amazon S3 对象的任何权限。如果您在设置 Lake Formation 之前曾访问了 Amazon S3 对象,请删除之前设置的任何 IAM 策略或存储桶权限。有关更多信息,请参阅将 Amazon Glue 数据权限升级到 Amazon Lake Formation 模型Lake Formation 权限

创建外部架构

要查询 Amazon S3 数据湖中的数据,请创建外部架构。外部架构引用了 Amazon Glue Data Catalog 中的外部数据库。

  1. 选择 
                            CreateCreate(创建),然后选择 Schema(架构)。

  2. 输入 Schema name(架构名称)。

  3. 要将数据库的所有权授予用户,请选择 Authorize user(授权用户)然后选择用户。

  4. 选择 External(外部)。

  5. Amazon Glue Data Catalog(Amazon Glue 数据目录)详细信息下,区域默认为 Redshift 数据库所在的区域。

  6. 选择外部架构将映射到的 Amazon Glue database(Amazon Glue 数据库)。

  7. 选择具有从 Amazon S3 查询数据所需的权限的 IAM role(IAM 角色)。

  8. 选择 Create schema(创建架构)。

    架构将显示在数据库浏览器中。

在 Amazon S3 数据湖中查询数据

您可以使用在前一个过程中创建的架构。

  1. 在数据库浏览器中,选择架构。

  2. 请选择一个表来查看表定义。

    此时系统将显示表列和数据类型。

  3. 要查询表,请选择表并使用上下文菜单(右键单击)选择 Select table(选择表)。