

# 配置数据目标节点
<a name="data-target-nodes"></a>

数据目标是任务写入转换后数据的位置。

## 数据目标选项概览
<a name="edit-jobs-target-overview"></a>

您的数据目标（也称为*数据接收器*）可以是：
+ **S3** – 任务将数据写入您选择的 Amazon S3 位置的文件中，并以您指定的格式写入。

  如果您为数据目标配置分区列，则任务会根据分区键将数据集写入 Amazon S3 的目录。
+ **AWS Glue Data Catalog** – 任务使用与数据目录中的表关联的信息将输出数据写入目标位置。

  您可以手动创建表，也可以使用爬网程序创建表。您还可以使用 AWS CloudFormation 模板在数据目录中创建表。
+ 连接器 – 连接器是一段代码，便于您在数据存储和 AWS Glue 之间通信。任务使用连接器和关联的连接将输出数据写入目标位置。您可以订阅 AWS Marketplace 中提供的连接器，或者您还可以创建自己的自定义连接器。有关更多信息，请参阅 [将连接器添加到 AWS Glue Studio](creating-custom-connectors.md#creating-connectors)

您可以选择在任务写入 Amazon S3 数据目标时更新数据目录。当架构或分区发生更改时，不需要爬网程序更新数据目录，此选项可以更轻松地使表保持最新状态。此选项可选择性地将新表添加到数据目录、更新表分区以及直接从任务更新表的方案，简化将数据用于分析的过程。

## 编辑数据目标节点
<a name="edit-jobs-target"></a>

数据目标是任务写入转换后数据的位置。

**在任务图中添加或配置数据目标节点**

1. （可选）如果需要添加目标节点，请在可视化编辑器顶部工具栏中选择 **Target (目标)**，然后选择 **S3** 或者 **Glue Data Catalog**。
   + 如果选择 **S3**，则任务将数据集写入您指定的 Amazon S3 位置中的一个或多个文件。
   + 如果选择 **AWS Glue Data Catalog**，则任务将写入从数据目录中选择的表所描述的位置。

1. 在任务图中选择一个数据目标节点。选择节点时，节点详细信息面板将在页面右侧显示。

1. 选择 **Node properties (节点属性)** 选项卡，然后输入以下信息：
   + **Name (名称)**：输入要与任务图中节点关联的名称。
   + **Node type (节点类型)**：应该已选择一个值，但您可以根据需要对其进行更改。
   + **Node parents (父节点)**：父节点是任务图中提供要写入目标位置的输出数据的节点。对于预填充的任务图，目标节点应该已经选择父节点。如果没有显示父节点，则从列表中选择父节点。

     目标节点具有单个父节点。

1. 配置 **Data target properties (数据目标属性)** 信息。有关详细信息，请参阅以下章节：
   + [将 Amazon S3 用于数据目标](#edit-job-target-S3)
   + [使用数据目标的数据目录表](#edit-job-target-catalog)
   + [将连接器用作数据目标](#edit-job-target-connector)

1. （可选）配置数据目标节点属性后，您可以选择节点详细信息面板中的 **Output schema (输出架构)** 选项卡，查看数据的输出架构。当您首次为任务中的任何节点选择此选项卡时，系统会提示您提供 IAM 角色以访问数据。如果您尚未在 **Job details (任务详细信息)** 选项卡上指定 IAM 角色，系统会提示您在此处输入 IAM 角色。

### 将 Amazon S3 用于数据目标
<a name="edit-job-target-S3"></a>

对于 Amazon S3 和连接器之外的所有数据源，表必须位于您所选择源类型的 AWS Glue Data Catalog 中。AWS Glue Studio 不会创建数据目录表。

**配置写入 Amazon S3 的数据目标节点**

1. 转到新任务或已保存任务的可视编辑器。

1. 在任务图中选择一个数据源节点。

1. 选择 **Data source properties (数据源属性)** 选项卡，然后输入以下信息：
   + **Format (格式)**：从列表中选择格式。数据结果的可用格式类型包括：
     + **JSON**：JavaScript 对象表示法。
     + **CSV**：逗号分隔的值。
     + **Avro**：Apache Avro JSON 二进制。
     + **Parquet**：此为自定义 Parquet 编写器类型，已针对 `DynamicFrames` 数据格式进行优化。它不需要数据预先计算的架构，而是动态计算和修改架构。
     + **ORC**：Apache 优化的行列式（ORC）格式。
     + **Apache Hudi**：此为开源数据湖存储框架，简化增量数据处理和数据管道开发。
     + **Apache Iceberg**：此为高性能的表格式，其工作原理与 SQL 表类似。
     + **Delta Lake**：此为开源数据湖存储框架，可帮助执行 ACID 交易、扩展元数据处理以及统一流式和批处理数据处理。
     + **XML**：此为可扩展标记语言（XML）。
     + **Tableau Hyper**：此为 Tableau 的内存中数据引擎技术。

     要了解有关这些格式选项的更多信息，请参阅《AWS Glue 开发人员指南》**中的 [AWS Glue 中 ETL 输入和输出的格式选项](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html)。
   + **压缩类型**：可以选择使用 `CSV`、`JSON` 或 `Parquet` 文件类型来压缩数据。默认值为无压缩，或 **None (无)**。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/data-target-nodes.html)
   + **S3 Target Location (S3 目标位置)**：Amazon S3 存储桶和数据输出的位置。您可以选择 **Browse S3 (浏览 S3)** 按钮，查看您有权访问的 Amazon S3 存储桶，然后选择一个作为目标目的地。
   + **数据目录更新选项**
     + **Do not update the Data Catalog (请勿更新数据目录)**：（默认）如果您不希望任务更新数据目录（即使架构更改或添加了新分区），请选择此选项。
     + **Create a table in the Data Catalog and on subsequent runs, update the schema and add new partitions (在数据目录中创建表并在后续运行时，更新架构并添加新分区)**：如果选择此选项，任务将在第一次任务运行时创建数据目录中的表。在后续任务运行时，如果架构发生更改或添加了新分区，任务将更新数据目录表。

       您还必须从数据目录中选择数据库并输入表名。
     + **Create a table in the Data Catalog and on subsequent runs, keep existing schema and add new partitions (在数据目录中创建表，并在后续运行时保持现有架构并添加新分区)**：如果选择此选项，任务将在第一次任务运行时创建数据目录中的表。在后续任务运行时，任务只更新数据目录表以添加新分区。

       您还必须从数据目录中选择数据库并输入表名。
   + **文件分区**：选择要保存输出的分区类型。
     + **自动生成文件（推荐）**：这是生成文件数量的默认值。
     + **多文件输出**：指定所需的文件输出数量。为获得最佳性能，请使用默认的自动生成文件数量。
   + **Partition keys (分区键)**：选择要在输出中用作分区键的列。要添加更多分区键，请选择 **Add a partition key (添加分区键)**。

   如果 Tableau Hyper 用作目标格式，则不支持文件分区。

### 使用数据目标的数据目录表
<a name="edit-job-target-catalog"></a>

对于 Amazon S3 和连接器之外的所有数据源，表必须位于您所选择目标类型的 AWS Glue Data Catalog 中。AWS Glue Studio 不会创建数据目录表。

**为使用数据目录表的目标配置数据属性**

1. 转到新任务或已保存任务的可视编辑器。

1. 在任务图中选择一个数据目标节点。

1. 选择 **Data target properties (数据目标属性)** 选项卡，然后输入以下信息：
   + **Database (数据库)**：从列表中选择包含用作目标的表的数据库。此数据库必须已存在于数据目录中。
   + **Table (表)**：从列表中选择定义输出数据架构的表。此表必须已存在于数据目录中。

     数据目录中的表包含列的名称、数据类型定义、分区信息以及有关目标数据集的其他元数据。您的任务写入数据目录中此表描述的位置。

     有关在数据目录中创建表的更多信息，请参阅 *AWS Glue 开发人员指南*中的[在数据目录中定义表](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html)。
   + **数据目录更新选项**
     + **Do not change table definition (请勿更改表定义)**：（默认）如果不希望任务更新数据目录（即使架构更改或添加了新分区），请选择此选项。
     + **Update schema and add new partitions (更新架构并添加新分区)**：如果选择此选项，任务将更新数据目录表（如果架构更改或添加新分区）。
     + **Keep existing schema and add new partitions (保留现有架构并添加新分区)**：如果选择此选项，任务将仅为了添加新分区而更新数据目录表。
     + **Partition keys (分区键)**：选择要在输出中用作分区键的列。要添加更多分区键，请选择 **Add a partition key (添加分区键)**。

### 将连接器用作数据目标
<a name="edit-job-target-connector"></a>

如果您为 **Node type (节点类型)** 选择连接器，请按照 [使用自定义连接器编写任务](job-authoring-custom-connectors.md) 中的说明操作，完成数据目标属性的配置。