

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 查询数据湖
<a name="query-editor-v2-querying-data-lake"></a>

可以按照本教程中的任务集查询 Amazon S3 数据湖中的数据。首先，您可以创建一个外部架构来引用在 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) 中的外部数据库。然后，您可以在 Simple Storage Service（Amazon S3）数据湖中查询数据。

## 演示：查询数据湖
<a name="query-editor-v2-example-data-lake-demo"></a>

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

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/-pyy0qNmEKo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/-pyy0qNmEKo)


## 先决条件
<a name="query-editor-v2-querying-data-lake-prerequisites"></a>

在查询编辑器 v2 中使用数据湖之前，请确认您在 Amazon Redshift 环境中进行了以下设置：
+ 使用 AWS Glue 爬取您的 Amazon S3 数据并为 AWS Lake Formation 启用 Data Catalog。
+ 使用为 AWS Lake Formation 启用的 AWS Glue Data Catalog，为 Amazon Redshift 创建 IAM 角色。有关此过程的详细信息，请参阅[使用为 AWS Lake Formation 启用的 AWS Glue Data Catalog 为 Amazon Redshift 创建 IAM 角色](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-stared-create-role-lake-formation)。有关使用 Redshift Spectrum 和 Lake Formation 的详细信息，请参阅[将 Redshift Spectrum 与 AWS Lake Formation 结合使用](https://docs.aws.amazon.com/redshift/latest/dg/spectrum-lake-formation.html)。
+ 授予对表的 SELECT 权限，以便在 Lake Formation 数据库中进行查询。有关此过程的详细信息，请参阅[授予对表的 SELECT 权限以在 Lake Formation 数据库中进行查询](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-started-grant-lake-formation-table)。

  您可以在 Lake Formation 控制台（https://console.aws.amazon.com/lakeformation/）中的**权限**部分的**数据湖权限**页面，验证该 IAM 角色、AWS Glue 数据库和表具有正确的权限。
+ 确认连接的用户有权在 Amazon Redshift 数据库中创建架构以及访问数据湖中的数据。在查询编辑器 v2 中连接到数据库时，您可以选择包含凭证的身份验证方法（可以是数据库用户或 IAM 用户）。连接的用户必须具有合适的权限和数据库权限，例如 `superuser`。创建集群或工作组的 Amazon Redshift `admin` 用户拥有 `superuser` 权限，可以创建架构和管理 Redshift 数据库。有关使用查询编辑器 v2 连接到数据库的更多信息，请参阅 [连接到 Amazon Redshift 数据库](query-editor-v2-connecting.md)。

## 创建外部架构
<a name="query-editor-v2-create-external-schema"></a>

要查询 Amazon S3 数据湖中的数据，请先创建外部架构。外部架构引用了 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) 中的外部数据库。

1. 在查询编辑器 v2 的**编辑器**视图中，选择 ![\[Create\]](http://docs.aws.amazon.com/zh_cn/redshift/latest/mgmt/images/qev2-add.png) **创建**，然后选择**架构**。

1. 输入**架构名称**。

1. 对于**架构类型**，选择**外部**。

1. 在 **Data Catalog** 详细信息下，**区域**默认为 Redshift 数据库所在的 AWS 区域。

1. 选择外部架构将映射的 **AWS Glue 数据库**，该数据库还应包含对 AWS Glue 表的引用。

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

1. （可选）选择具有 Data Catalog 权限的 **IAM 角色**。

1. 选择**创建架构**。

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

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

## 在 Simple Storage Service（Amazon S3）数据湖中查询数据
<a name="query-editor-v2-query-data-lake"></a>

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

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

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

1. 要查询表，请选择该表并使用上下文菜单（右键单击），选择**选择表**以生成查询。

1. 在**编辑器**中运行查询。

   以下示例 SQL 由查询编辑器 v2 生成，用于查询名为 `flightscsv` 的 AWS 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	
   ...
   ```