

# 连接到 AWS Glue Studio 中的 Amazon Redshift
<a name="connecting-to-data-redshift"></a>

**注意**  
 您可以使用 AWS Glue for Spark 在 AWS Glue Studio 以外读取和写入 Amazon Redshift 数据库中的表。要以编程方式为 Amazon Redshift 配置 AWS Glue 作业，请参阅 [Redshift 连接](aws-glue-programming-etl-connect-redshift-home.md)。

 AWS Glue 提供对 Amazon Redshift 的内置支持。AWS Glue Studio 提供一个可视化界面，用于连接到 Amazon Redshift、创作数据集成作业并在 AWS Glue Studio 无服务器 Spark 运行时上运行这些作业。

**Topics**
+ [创建 Amazon Redshift 连接](creating-redshift-connection.md)
+ [创建 Amazon Redshift 源节点](creating-redshift-source-node.md)
+ [创建 Amazon Redshift 目标节点](creating-redshift-target-node.md)
+ [高级选项](creating-redshift-connection-advanced-options.md)

# 创建 Amazon Redshift 连接
<a name="creating-redshift-connection"></a>

## 所需权限
<a name="creating-redshift-connection-permissions"></a>

 使用 Amazon Redshift 集群和 Amazon Redshift 无服务器环境需要额外的权限。有关如何为 ETL 作业添加权限的更多信息，请参阅 [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)。
+  redshift:DescribeClusters 
+  redshift-serverless:ListWorkgroups 
+  redshift-serverless:ListNamespaces 

## 概述
<a name="w2aac25c27c13c11b5"></a>

 添加 Amazon Redshift 连接时，您可以选择现有 Amazon Redshift 连接，也可以在 AWS Glue Studio 中添加**数据来源 - Redshift** 节点时创建新连接。

 AWS Glue 同时支持 Amazon Redshift 集群和 Amazon Redshift 无服务器环境。创建连接时，Amazon Redshift 无服务器环境会在连接选项旁边显示**无服务器**标签。

 有关如何创建 Amazon Redshift 连接的更多信息，请参阅 [Moving data to and from Amazon Redshift](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using)。

# 创建 Amazon Redshift 源节点
<a name="creating-redshift-source-node"></a>

## 所需权限
<a name="creating-redshift-source-node-permissions"></a>

 使用 Amazon Redshift 数据来源的 AWS Glue Studio 作业需要额外的权限。有关如何为 ETL 作业添加权限的更多信息，请参阅 [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)。

 要使用 Amazon Redshift 连接，需要以下权限。
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 
+  redshift-data:DescribeTable 
+  redshift-data:ExecuteStatement 
+  redshift-data:DescribeStatement 
+  redshift-data:GetStatementResult 

## 添加 Amazon Redshift 数据来源
<a name="creating-redshift-source-node-add"></a>

**要添加**数据来源 - Amazon Redshift** 节点，请执行以下操作：**

1.  选择 Amazon Redshift 访问类型：
   +  直接数据连接（推荐）- 如果您想直接访问 Amazon Redshift 数据，请选择此选项。这是推荐的选项，也是默认选项。
   +  Data Catalog tables - 如果您有要使用的 Data Catalog 表，请选择此选项。

1.  如果您选择直接数据连接，请为 Amazon Redshift 数据来源选择连接。这假设该连接已经存在，并且您可以从现有连接中进行选择。如果需要创建连接，请选择**创建 Redshift 连接**。有关更多信息，请参阅 [Overview of using connectors and connections](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)。

    选择连接后，您可以通过单击**查看属性**来查看连接属性。可以看到有关连接的信息，包括 URL、安全组、子网、可用区、描述以及创建时间（UTC）和上次更新时间（UTC）时间戳。

1.  选择 Amazon Redshift 来源选项：
   +  **选择单个表** - 该表包含您要从单个 Amazon Redshift 表中访问的数据。
   +  **输入自定义查询** - 允许您根据自定义查询访问多个 Amazon Redshift 表中的数据集。

1.  如果您选择了单个表，请选择 Amazon Redshift 架构。可供选择的可用架构列表由所选表决定。

    或者，选择**输入自定义查询**。选择此选项可访问多个 Amazon Redshift 表中的自定义数据集。选择此选项后，输入 Amazon Redshift 查询。

    连接到 Amazon Redshift 无服务器环境时，请向自定义查询添加以下权限：

   ```
               GRANT SELECT ON ALL TABLES IN <schema> TO PUBLIC
   ```

    您可以选择**推断架构**，根据您输入的查询来读取架构。您也可以选择**打开 Redshift 查询编辑器**来输入 Amazon Redshift 查询。有关更多信息，请参阅 [Querying a database using the query editor](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor.html)。

1.  在**性能和安全**中，选择 Amazon S3 暂存目录和 IAM 角色。
   +  **Amazon S3 暂存目录** — 选择用于临时暂存数据的 Amazon S3 位置。
   +  **IAM 角色** - 选择可以写入您选择的 Amazon S3 位置的 IAM 角色。

1.  在**自定义 Redshift 参数 - 可选**中，输入参数和值。

# 创建 Amazon Redshift 目标节点
<a name="creating-redshift-target-node"></a>

## 所需权限
<a name="creating-redshift-target-node-permissions"></a>

 使用 Amazon Redshift 数据目标的 AWS Glue Studio 作业需要额外的权限。有关如何为 ETL 作业添加权限的更多信息，请参阅 [Review IAM permissions needed for ETL jobs](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)。

 要使用 Amazon Redshift 连接，需要以下权限。
+  redshift-data:ListSchemas 
+  redshift-data:ListTables 

## 添加 Amazon Redshift 目标节点
<a name="w2aac25c27c13c15b5"></a>

**要创建 Amazon Redshift 目标节点，请执行以下操作：**

1.  选择现有 Amazon Redshift 表作为目标，或输入新的表名。

1.  使用**数据目标 - Redshift** 目标节点时，可以从以下选项中进行选择：
   +  **附加** - 如果表已经存在，则将所有新数据作为插入内容转储到表中。如果表不存在，请创建表并插入所有新数据。

      此外，如果要更新（更新插入）目标表中的现有记录，请选中该复选框。该表必须先存在，否则操作将失败。
   +  **合并** - AWS Glue 将根据您指定的条件更新数据或将数据附加到目标表。
**注意**  
 要在 AWS Glue 中使用合并操作，必须启用 Amazon Redshift 合并功能。有关如何为您的 Amazon Redshift 实例启用合并的说明，请参阅 [MERGE (preview)](https://docs.aws.amazon.com/redshift/latest/dg/r_MERGE.html)。

      选择选项：
     + **选择键和简单操作** - 选择要用作源数据和目标数据集之间匹配键的列。

       匹配时指定以下选项：
       + 使用源数据更新目标数据集中的记录。
       + 删除目标数据集中的记录。

       如果不匹配，请指定以下选项：
       + 将源数据作为新行插入目标数据集。
       + 不执行任何操作。
     + **输入自定义 MERGE 语句** - 然后，您可以选择**验证合并语句**来验证该语句是有效还是无效。
   +  **截断** - 如果表已经存在，请先清除目标表的内容，从而截断表数据。如果截断成功，则插入所有数据。如果表不存在，请创建表并插入所有数据。如果截断不成功，操作将失败。
   +  **丢弃** - 如果表已存在，则删除表的元数据和数据。如果删除成功，则插入所有数据。如果表不存在，请创建表并插入所有数据。如果丢失不成功，操作将失败。
   +  **创建** - 使用默认名称创建新表。如果表名已经存在，请创建一个名称后缀为 `job_datetime` 的新表以保持唯一性。这会将所有数据插入到新表中。如果该表存在，则最终的表名将附加后缀。如果该表不存在，则将创建一个表。无论哪种情况，都将创建一个新表。

# 高级选项
<a name="creating-redshift-connection-advanced-options"></a>

 请参阅 [Using the Amazon Redshift Spark connector on AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html#aws-glue-programming-etl-redshift-using)。