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

查询数据湖

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

演示:查询数据湖

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

先决条件

在查询编辑器 v2 中使用数据湖之前,请确认您在 Amazon Redshift 环境中进行了以下设置:

  • 使用 Amazon Glue 爬取您的 Amazon S3 数据并为 Amazon Lake Formation 启用 Data Catalog。

  • 使用为 Amazon Lake Formation 启用的 Amazon Glue Data Catalog,为 Amazon Redshift 创建 IAM 角色。有关此过程的详细信息,请参阅使用为 Amazon Lake Formation 启用的 Amazon Glue Data Catalog 为 Amazon Redshift 创建 IAM 角色。有关使用 Redshift Spectrum 和 Lake Formation 的详细信息,请参阅将 Redshift Spectrum 与 Amazon Lake Formation 结合使用

  • 授予对表的 SELECT 权限,以便在 Lake Formation 数据库中进行查询。有关此过程的详细信息,请参阅授予对表的 SELECT 权限以在 Lake Formation 数据库中进行查询

    您可以在 Lake Formation 控制台(https://console.aws.amazon.com/lakeformation/)中的权限部分的数据湖权限页面,验证该 IAM 角色、Amazon Glue 数据库和表具有正确的权限。

  • 确认连接的用户有权在 Amazon Redshift 数据库中创建架构以及访问数据湖中的数据。在查询编辑器 v2 中连接到数据库时,您可以选择包含凭证的身份验证方法(可以是数据库用户或 IAM 用户)。连接的用户必须具有合适的权限和数据库权限,例如 superuser。创建集群或工作组的 Amazon Redshift admin 用户拥有 superuser 权限,可以创建架构和管理 Redshift 数据库。有关使用查询编辑器 v2 连接到数据库的更多信息,请参阅连接到 Amazon Redshift 数据库

创建外部架构

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

  1. 在查询编辑器 v2 的编辑器视图中,选择 
                            Create 创建,然后选择架构

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

  3. 对于架构类型,选择外部

  4. Data Catalog 详细信息下,区域默认为 Redshift 数据库所在的 Amazon Web Services 区域。

  5. 选择外部架构将映射的 Amazon Glue 数据库,该数据库还应包含对 Amazon Glue 表的引用。

  6. 为 Amazon Redshift 选择相应的 IAM 角色,该角色应具有从 Amazon S3 查询数据所需的权限。

  7. (可选)选择具有 Data Catalog 权限的 IAM 角色

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

    该架构将显示在树视图面板中您的数据库下方。

创建架构时,如果您收到数据库权限被拒绝错误,请检查连接的用户是否具有创建架构的数据库权限。

在 Simple Storage Service(Amazon S3)数据湖中查询数据

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

  1. 在树视图面板中,选择该架构。

  2. 请选择一个表来查看表定义。此时系统将显示表列和数据类型。

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

  4. 编辑器中运行查询。

    以下示例 SQL 由查询编辑器 v2 生成,用于查询名为 flightscsv 的 Amazon Glue 表中的所有行。为简化起见,只显示了输出中的部分列和行。

    SELECT * FROM "dev"."mydatalake_schema"."flightscsv"; year quarter month dom day_of_week fl_date unique_carrier airline_id carrier tail_num fl_num 2016 4 10 19 3 10/19/16 OO 20304 OO N753SK 3086 2016 4 10 19 3 10/19/16 OO 20304 OO N753SK 3086 2016 4 10 19 3 10/19/16 OO 20304 OO N778SK 3087 2016 4 10 19 3 10/19/16 OO 20304 OO N778SK 3087 ...