

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 导出
<a name="data-wrangler-data-export"></a>

在 Data Wrangler 流中，可以将所做的部分或全部转换导出到数据处理管道中。

*Data Wrangler 流*是您对数据执行的一系列数据准备步骤。在数据准备过程中，需要对数据进行一次或多次转换。每次转换都是使用转换步骤完成的。该流包含一系列节点，这些节点代表您的数据导入和您执行的转换。有关节点的示例，请参阅下面的图像。

![Data Wrangler 管理控制台中的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-0.png)


上图显示了带两个节点的 Data Wrangler 流。**来源 – 采样**节点显示您从中导入数据的数据来源。**数据类型**节点指示 Data Wrangler 已执行转换将数据集转换为可用格式。

添加到 Data Wrangler 流的每个转换都显示为一个附加节点。有关可添加的转换的信息，请参阅[转换数据](data-wrangler-transform.md)。下图显示了一个 Data Wrangler 流，该流具有用于更改数据集内列名的**重命名列**节点。

可以将数据转换导出到以下位置：
+ Amazon S3
+ 管道
+ Amazon SageMaker 专题商店
+ Python Code

**重要**  
我们建议您使用 IAM `AmazonSageMakerFullAccess` 托管策略来授予使用 Data Wrangler 的 AWS 权限。如果您不使用托管式策略，则可以使用 IAM 策略，向 Data Wrangler 授予对 Amazon S3 存储桶的访问权限。有关托管式策略的更多信息，请参阅[安全性和权限](data-wrangler-security.md)。

导出数据流时，您需要为所使用的 AWS 资源付费。可以使用成本分配标签来组织和管理这些资源的成本。您负责为用户配置文件创建这些标签，Data Wrangler 会自动将标签应用于用来导出数据流的资源。有关更多信息，请参阅[使用成本分配标签](https://docs.aws.amazon.com//awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。

## 导出到 Amazon S3
<a name="data-wrangler-data-export-s3"></a>

利用 Data Wrangler，您可以将数据导出到 Amazon S3 存储桶中的某个位置。您可以使用以下方法之一指定该位置：
+ 目标节点 – Data Wrangler 在处理完数据后存储数据的位置。
+ 导出目标 – 将转换后生成的数据导出到 Amazon S3。
+ 导出数据 – 对于小数据集，可以快速导出转换的数据。

使用以下部分详细了解这些方法中的每种方法。

------
#### [ Destination Node ]

如果您要将已执行的一系列数据处理步骤输出到 Amazon S3，可以创建一个目标节点。处理完数据后，*目标节点*会指示 Data Wrangler 将数据存储在什么位置。创建目标节点后，您可以创建一个处理作业来输出数据。*处理任务*是 Amazon 的 SageMaker 处理任务。使用目标节点时，处理作业会运行将已转换的数据输出到 Amazon S3 所需的计算资源。

可以使用目标节点导出您在 Data Wrangler 流中进行的某些转换或所有转换。

可以使用多个目标节点来导出不同的转换或转换集。以下示例显示了单个 Data Wrangler 流中的两个目标节点。

![显示 Data Wrangler 管理控制台中两个目标节点的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-4.png)


可以使用以下过程创建目标节点并导出到 Amazon S3 存储桶。

要导出数据流，您需要创建目标节点以及用于导出数据的 Data Wrangler 作业。创建 Data Wrangler 作业会启动 SageMaker 处理任务以导出您的流程。您创建目标节点后，可以选择要导出的目标节点。
**注意**  
可以在 Data Wrangler 流中选择**创建作业**，查看使用处理作业的说明。

使用以下过程创建目标节点。

1. 选择代表要导出的转换的节点旁边的 **\+**。

1. 选择**添加目标**。  
![显示如何在 Data Wrangler 管理控制台中添加目的地的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-0.png)

1. 选择 **Amazon S3**。  
![显示如何在 Data Wrangler 管理控制台中添加目的地的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-S3-selected.png)

1. 指定以下字段。
   + **数据集名称** – 您为要导出的数据集指定的名称。
   + **文件类型** – 要导出的文件的格式。
   + **分隔符**（仅限 CSV 和 Parquet 文件）– 用于分隔其他值的值。
   + **压缩**（仅限 CSV 和 Parquet 文件）– 用于减小文件大小的压缩方法。可以使用以下压缩方法：
     + bzip2
     + deflate
     + gzip
   + （可选）**Amazon S3 位置** – 用于输出文件的 S3 位置。
   + （可选）**分区数** – 作为处理作业输出正在写入的数据集的数量。
   + （可选）**按列分区** – 写入列中具有相同唯一值的所有数据。
   + （可选）**推理参数** – 选择**生成推理构件**会将您在 Data Wrangler 流中使用的所有转换应用于进入推理管道的数据。管道中的模型会对转换后的数据进行预测。

1. 选择**添加目标**。

使用以下过程创建处理作业。

从**数据流**页面创建作业，然后选择要导出的目标节点。
**注意**  
可以在 Data Wrangler 流中选择**创建作业**，查看创建处理作业的说明。

1. 选择**创建作业**。下图显示了在您选择**创建作业**后显示的窗格。  
![Data Wrangler 管理控制台中的数据流创建任务窗格示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-create-job.png)

1. 对于**作业名称**，指定导出作业的名称。

1. 选择要导出的目标节点。

1. （可选）指定密 AWS KMS 钥 ARN。 AWS KMS 密钥是一种加密密钥，可用于保护您的数据。有关 AWS KMS 密钥的更多信息，请参阅[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

1. （可选）在**已训练参数**下，如果您已完成以下操作，请选择**重新拟合**：
   + 已对数据集进行采样
   + 已应用了转换，即利用您的数据在数据集内创建新列

   有关重新拟合已对整个数据集所做的转换的更多信息，请参阅[重新拟合整个数据集的转换并导出](#data-wrangler-data-export-fit-transform)。
**注意**  
对于图像数据，Data Wrangler 会导出您对所有图像所做的转换。重新拟合转换不适用于您的用例。

1. 选择**配置作业**。下图显示了**配置作业**页面。  
![Data Wrangler 管理控制台中的数据流配置任务页面示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

1. （可选）配置 Data Wrangler 作业。可以执行以下配置：
   + **作业配置**
   + **Spark 内存配置**
   + **网络配置**
   + **标签**
   + **参数**
   + **关联日程安排**

1. 选择**运行**。

------
#### [ Export to ]

作为使用目标节点的替代方案，可以使用**导出目标**选项，使用 Jupyter 笔记本将 Data Wrangler 流导出到 Amazon S3。可以在 Data Wrangler 流中选择任何数据节点并导出。导出数据节点时，会导出该节点所代表的转换及其之前的转换。

使用以下过程生成 Jupyter 笔记本并运行，将您的 Data Wrangler 流导出到 Amazon S3。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择 **Amazon S3（通过 Jupyter 笔记本**）。

1. 运行 Jupyter 笔记本。  
![显示如何在 Data Wrangler 管理控制台中导出 Data Wrangler 流程的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)

当你运行笔记本时，它会以与 Data Wrangler 流程相同 AWS 区域 的方式导出你的数据流（.flow 文件）。

笔记本提供了可用于配置处理作业及其输出的数据的选项。

**重要**  
我们为您提供作业配置，以便配置您的数据输出。对于分区和驱动程序内存选项，我们强烈建议不要指定配置，除非您已了解这些配置。

在**作业配置**下，可以配置以下内容：
+ `output_content_type` – 输出文件的内容类型。使用 `CSV` 作为默认格式，但您可以指定 `Parquet`。
+ `delimiter` – 写入 CSV 文件时用于分隔数据集内的值的字符。
+ `compression` – 如果已设置，则压缩输出文件。默认情况下使用 gzip 作为压缩格式。
+ `num_partitions` – Data Wrangler 作为输出写入的分区或文件的数量。
+ `partition_by` – 用于对输出进行分区的列的名称。

要将输出文件格式从 CSV 更改为 Parquet，请将值从 `"CSV"` 更改为 `"Parquet"`。对于前面的其余字段，取消注释包含要指定的字段的行。

在**（可选）配置 Spark 集群驱动程序内存**下，可以在 `config` 字典中为作业配置 Spark 属性，例如 Spark 驱动程序内存。

下面显示了 `config` 字典。

```
config = json.dumps({
    "Classification": "spark-defaults",
    "Properties": {
        "spark.driver.memory": f"{driver_memory_in_mb}m",
    }
})
```

要将配置应用于处理作业，请取消注释以下行：

```
# data_sources.append(ProcessingInput(
#     source=config_s3_uri,
#     destination="/opt/ml/processing/input/conf",
#     input_name="spark-config",
#     s3_data_type="S3Prefix",
#     s3_input_mode="File",
#     s3_data_distribution_type="FullyReplicated"
# ))
```

------
#### [ Export data ]

如果您想快速导出小型数据集进行转换，可以使用**导出数据**方法。当您开始选择**导出数据**时，Data Wrangler 会同步工作，以导出您转换到 Amazon S3 的数据。在 Data Wrangler 完成数据导出或您取消操作之前，您无法使用 Data Wrangler。

有关在 Data Wrangler 流中使用**导出数据**方法的信息，请参阅以下过程。

要使用**导出数据**方法，请执行以下操作：

1. 在 Data Wrangler 流中选择一个节点，方法是将其打开（双击）。  
![显示如何在 Data Wrangler 管理控制台中导出数据的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/export-s3.png)

1. 配置导出数据的方法。

1. 选择**导出数据**。

------

当您将数据流导出到 Amazon S3 存储桶时，Data Wrangler 会将流文件的副本存储在 S3 存储桶中。它将流文件存储在 *data\_wrangler\_flows* 前缀下。如果您使用默认的 Amazon S3 存储桶来存储流文件，它将使用以下命名约定：`sagemaker-{{region}}-{{account number}}`。例如，如果您的账号是 111122223333，并且在 us-east-1 中使用 Studio Classic，那么导入的数据集将存储在 `sagemaker-us-east-1-111122223333` 中。在本示例中，您在 us-east-1 中创建的 .flow 文件存储在 `s3://sagemaker-{{region}}-{{account number}}/data_wrangler_flows/` 中。

## 导出到管道
<a name="data-wrangler-data-export-pipelines"></a>

当你想要构建和部署大规模机器学习 (ML) 工作流程时，你可以使用 Pipelines 来创建管理和部署 SageMaker AI 作业的工作流程。借助 Pipelines，您可以构建工作流程来管理 SageMaker AI 数据准备、模型训练和模型部署作业。你可以使用 Pipelines 来使用 SageMaker AI 提供的第一方算法。有关管道的更多信息，请参阅[SageMaker 管道](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines.html)。

当您将数据流中的一个或多个步骤导出到 Pipelines 时，Data Wrangler 会创建一个可用于定义、实例化、运行和管理管道的 Jupyter Notebook。

### 使用 Jupyter 笔记本创建管道
<a name="data-wrangler-pipelines-notebook"></a>

使用以下步骤创建 Jupyter Notebook，将您的 Data Wrangler 流导出到 Pipelines。

使用以下步骤生成 Jupyter Notebook 并运行，将您的 Data Wrangler 流导出到 Pipelines。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择 **Pipelines（通过 Jupyter Notebook）**。

1. 运行 Jupyter 笔记本。

![显示如何在 Data Wrangler 管理控制台中导出 Data Wrangler 流程的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


您可以使用 Data Wrangler 生成的 Jupyter 笔记本来定义管道。管道包括由 Data Wrangler 流定义的数据处理步骤。

通过将步骤添加到笔记本的以下代码中的 `steps` 列表，您可以向管道添加其他步骤：

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[instance_type, instance_count],
    steps=[step_process], #Add more steps to this list to run in your Pipeline
)
```

有关定义管道的更多信息，请参阅[定义 SageMaker AI 管道](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html)。

## 导出到推理端点
<a name="data-wrangler-data-export-inference"></a>

在 Data Wrangler 流程中创建 SageMaker AI 串行推理管道，在推理时使用 Data Wrangler 流程处理数据。推理管道是一系列步骤，可用于生成对新数据进行预测的经过训练的模型。Data Wrangler 中的串行推理管道可转换原始数据，并将数据提供给机器学习模型进行预测。在 Studio Classic 中，您可以通过 Jupyter Notebook 创建、运行和管理推理管道。有关访问笔记本的更多信息，请参阅[使用 Jupyter 笔记本创建推理端点](#data-wrangler-inference-notebook)。

在笔记本中，您可以训练机器学习模型，也可以指定已训练的模型。你可以使用 Amazon A SageMaker utopilot XGBoost ，也可以使用你在 Data Wrangler 流程中转换的数据来训练模型。

利用管道，您可以执行批量或实时推理。您也可以将 Data Wrangler 流程添加到 “ SageMaker 模型注册表”。有关托管模型的更多信息，请参阅[多模型端点](multi-model-endpoints.md)。

**重要**  
如果 Data Wrangler 流具有以下转换，则无法将该流导出到推理端点：  
联接
串联
分组依据
如果必须使用上述转换来准备您的数据，请使用以下过程。  
创建 Data Wrangler 流。
应用前面的不受支持的转换。
将数据导出到 Amazon S3 存储桶。
创建单独的 Data Wrangler 流。
导入您在前面的流中导出的数据。
应用其余的转换。
使用我们提供的 Jupyter 笔记本创建串行推理管道。
有关将数据导出到 Amazon S3 存储桶的信息，请参阅[导出到 Amazon S3](#data-wrangler-data-export-s3)。有关打开用于创建串行推理管道的 Jupyter 笔记本的信息，请参阅[使用 Jupyter 笔记本创建推理端点](#data-wrangler-inference-notebook)。

Data Wrangler 会忽略那些在推理时删除数据的转换。例如，如果您使用**删除缺失项**配置，Data Wrangler 会忽略[处理缺失值](data-wrangler-transform.md#data-wrangler-transform-handle-missing)转换。

如果您重新拟合整个数据集的转换，则转换会延续到您的推理管道。例如，如果使用了中位数来估算缺失值，则重新拟合转换所得的中位数将应用于您的推理请求。在使用 Jupyter 笔记本或将数据导出到推理管道时，可以重新拟合 Data Wrangler 流中的转换。有关重新拟合转换的信息，请参阅[重新拟合整个数据集的转换并导出](#data-wrangler-data-export-fit-transform)。

串行推理管道支持以下数据类型的输入和输出字符串。每个数据类型都有一组要求。

**支持的数据类型**
+ `text/csv` – CSV 字符串的数据类型
  + 字符串不能具有标头。
  + 用于推理管道的特征必须与训练数据集内的特征顺序相同。
  + 特征之间必须有一个逗号分隔符。
  + 记录必须使用一个换行符分隔。

  下面是可在推理请求中提供的有效格式的 CSV 字符串示例。

  ```
  abc,0.0,"Doe, John",12345\ndef,1.1,"Doe, Jane",67890                    
  ```
+ `application/json` – JSON 字符串的数据类型
  + 数据集内用于推理管道的特征的顺序必须与训练数据集内的特征顺序相同。
  + 数据必须具有特定架构。可以将架构定义为具有一组 `features` 的单个 `instances` 对象。每个 `features` 对象都表示一个观测值。

  下面是可在推理请求中提供的有效格式的 JSON 字符串示例。

  ```
  {
      "instances": [
          {
              "features": ["abc", 0.0, "Doe, John", 12345]
          },
          {
              "features": ["def", 1.1, "Doe, Jane", 67890]
          }
      ]
  }
  ```

### 使用 Jupyter 笔记本创建推理端点
<a name="data-wrangler-inference-notebook"></a>

按照以下过程操作，导出您的 Data Wrangler 流以创建推理管道。

要使用 Jupyter 笔记本创建推理管道，请执行以下操作。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择 **SageMaker AI 推理管道（通过 Jupyter** 笔记本）。

1. 运行 Jupyter 笔记本。

当您运行 Jupyter 笔记本时，会创建一个推理流构件。推理流构件是一个 Data Wrangler 流文件，其中包含用于创建串行推理管道的附加元数据。您正导出的节点包含来自前面节点的所有转换。

**重要**  
Data Wrangler 需要推理流构件来运行推理管道。您不能将自己的流文件用作构件。您必须使用前面的步骤创建构件。

## 导出到 Python Code
<a name="data-wrangler-data-export-python-code"></a>

要将数据流中的所有步骤导出到可手动集成到任何数据处理工作流的 Python 文件，请使用以下步骤。

使用以下过程生成 Jupyter 笔记本并运行，将您的 Data Wrangler 流导出到 Python Code。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择 **Python 代码**。

1. 运行 Jupyter 笔记本。

![显示如何在 Data Wrangler 管理控制台中导出 Data Wrangler 流程的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


您可能需要配置 Python 脚本才能在管道中运行。例如，如果您运行的是 Spark 环境，请确保在有权访问 AWS 资源的环境中运行脚本。

## 导出到 Amazon SageMaker 特色商店
<a name="data-wrangler-data-export-feature-store"></a>

您可以使用 Data Wrangler 将您创建的功能导出到亚马逊 SageMaker 功能商店。特征是数据集内的一列。Feature Store 是特征及其相关元数据的集中存储位置。您可以使用 Feature Store 创建、共享和管理用于机器学习 (ML) 开发的精选数据。集中式存储能够让您的数据更易于发现和重复使用。有关功能商店的更多信息，请参阅 [Amazon F SageMaker eature Store](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store.html)。

Feature Store 中的一个核心概念是特征组。特征组是特征及其记录（观测值）和关联元数据的集合。它类似于数据库中的表。

可以使用 Data Wrangler 执行下列操作之一：
+ 使用新记录更新现有特征组。记录是数据集内的观测值。
+ 从您的 Data Wrangler 流中的节点创建新的特征组。Data Wrangler 会将数据集内的观测值作为记录添加到特征组中。

如果要更新现有特征组，则数据集的架构必须与该特征组的架构相匹配。特征组中的所有记录都将替换为数据集内的观测值。

可以通过 Jupyter 笔记本或目标节点，使用数据集内的观测值更新您的特征组。

如果您采用 Iceberg 表格式的功能组具有自定义的离线商店加密密钥，请务必向用于亚马逊 SageMaker Processing 任务的 IAM 授予使用该密钥的权限。必须至少向其授予对正写入 Amazon S3 的数据进行加密的权限。要授予权限，请让 IAM 角色能够使用[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)。有关授予 IAM 角色使用 AWS KMS 密钥的权限的更多信息，请参阅 [https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)

------
#### [ Destination Node ]

如果您要将已执行的一系列数据处理步骤输出到特征组，可以创建一个目标节点。在创建和运行目标节点时，Data Wrangler 会使用您的数据更新特征组。您还可以从目标节点 UI 创建新的特征组。创建目标节点后，您可以创建一个处理作业来输出数据。处理任务是 Amazon 的 SageMaker 处理任务。使用目标节点时，该作业会运行将已转换的数据输出到特征组所需的计算资源。

可以使用目标节点导出您在 Data Wrangler 流中进行的某些转换或所有转换。

通过以下过程创建目标节点，以使用数据集内的观测值更新特征组。

要使用目标节点更新特征组，请执行以下操作。
**注意**  
可以在 Data Wrangler 流中选择**创建作业**，查看使用处理作业更新特征组的说明。

1. 选择包含要导出的数据集的节点旁边的 **\+** 号。

1. 在 “**添加目的地**” 下，选择 **SageMaker AI 功能库**。  
![显示如何在 Data Wrangler 管理控制台中添加目的地的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/feature-store-destination-node-selection.png)

1. 选择（双击）该特征组。Data Wrangler 会检查特征组的架构是否与您用于更新特征组的数据架构相匹配。

1. （可选）对于同时具有在线存储和离线存储的特征组，选择**仅导出到离线存储**。此选项仅使用数据集内的观测值更新离线存储。

1. 在 Data Wrangler 验证您的数据集架构后，选择**添加**。

通过以下过程，使用数据集内的数据创建新的特征组。

可以通过以下方式之一存储特征组：
+ 在线 – 低延迟、高可用性缓存，用于可提供实时记录查找的特征组。使用在线存储可以快速访问特征组中的记录的最新值。
+ 离线 – 将特征组的数据存储在 Amazon S3 存储桶中。当您不需要低延迟（亚秒）读取时，可以离线存储数据。可以使用离线存储来存储在进行数据探究、模型训练和批处理推理时使用的功能。
+ 在线和离线 – 将您的数据存储于在线存储和离线存储中。

要使用目标节点创建特征组，请执行以下操作。

1. 选择包含要导出的数据集的节点旁边的 **\+** 号。

1. 在 “**添加目的地**” 下，选择 **SageMaker AI 功能库**。

1. 选择**创建特征组**。

1. 在以下对话框中，如果您的数据集没有事件时间列，请选择**创建 “EventTime” 列**。

1. 选择**下一步**。

1. 选择**复制 JSON 架构**。创建特征组时，会将架构粘贴到特征定义中。

1. 选择**创建**。

1. 在**特征组名称**中，为您的特征组指定名称。

1. 在**描述（可选）**中，指定描述以使您的特征组更便于搜索。

1. 要为在线存储创建特征组，请执行以下操作。

   1. 选择**启用在线存储**。

   1. 对于**在线商店加密密钥**，请指定 AWS 托管加密密钥或您自己的加密密钥。

1. 要为离线存储创建特征组，请执行以下操作。

   1. 选择**启用离线存储**。为以下字段指定值：
      + **S3 存储桶名称** – 存储特征组的 Amazon S3 存储桶的名称。
      + （可选）**数据集目录名称** – 用于存储特征组的 Amazon S3 前缀。
      + **IAM 角色 ARN** – 有权访问 Feature Store 的 IAM 角色。
      + **表格格式** – 离线存储的表格格式。可以指定 **Glue** 或 **Iceberg**。**Glue** 为默认格式。
      + **离线存储加密密钥** – 默认情况下，Feature Store 使用 AWS Key Management Service 托管式密钥，不过您可以使用该字段来指定自己的密钥。

   1. 为以下字段指定值：
      + **S3 存储桶名称** – 存储特征组的存储桶的名称。
      + **（可选）数据集目录名称** – 用于存储特征组的 Amazon S3 前缀。
      + **IAM 角色 ARN** – 有权访问 Feature Store 的 IAM 角色。
      + **离线存储加密密钥** – 默认情况下，Feature Store 使用 AWS 托管式密钥，不过您可以使用该字段来指定自己的密钥。

1. 选择**继续**。

1. 选择 **JSON**。

1. 删除窗口中的占位符括号。

1. 粘贴步骤 6 中的 JSON 文本。

1. 选择**继续**。

1. 对于**记录标识符特征名称**，选择数据集内对每个记录具有唯一标识符的列。

1. 对于**事件时间特征名称**，选择包含时间戳值的列。

1. 选择**继续**。

1. （可选）添加标签，使您的特征组更容易搜索到。

1. 选择**继续**。

1. 选择**创建特征组**。

1. 导航回您的 Data Wrangler 流，然后选择**特征组**搜索栏旁边的刷新图标。

**注意**  
如果您已经为流中的特征组创建了目标节点，则无法为同一特征组创建其他目标节点。如果要为同一个特征组创建另一个目标节点，则必须创建另一个流文件。

可以使用以下过程创建 Data Wrangler 作业。

从**数据流**页面创建作业，然后选择要导出的目标节点。

1. 选择**创建作业**。下图显示了在您选择**创建作业**后显示的窗格。

1. 对于**作业名称**，指定导出作业的名称。

1. 选择要导出的目标节点。

1. （可选）对于**输出 KMS 密钥**，请指定密钥的 ARN、ID 或别名。 AWS KMS KMS 密钥是一种加密密钥。对于作业的输出数据，可以使用密钥进行加密。有关 AWS KMS 密钥的更多信息，请参阅[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)。

1. 下图显示了**配置作业**页面，其中**作业配置**选项卡处于打开状态。  
![Data Wrangler 管理控制台中的数据流创建任务页面示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

   （可选）在**已训练参数**下，如果您已完成以下操作，请选择**重新拟合**：
   + 已对数据集进行采样
   + 已应用了转换，即利用您的数据在数据集内创建新列

   有关重新拟合已对整个数据集所做的转换的更多信息，请参阅 [重新拟合整个数据集的转换并导出](#data-wrangler-data-export-fit-transform)。

1. 选择**配置作业**。

1. （可选）配置 Data Wrangler 作业。可以执行以下配置：
   + **作业配置**
   + **Spark 内存配置**
   + **网络配置**
   + **标签**
   + **参数**
   + **关联日程安排**

1. 选择**运行**。

------
#### [ Jupyter notebook ]

使用以下步骤将 Jupyter 笔记本导出到亚马逊 SageMaker 功能商店。

使用以下过程生成 Jupyter 笔记本并运行，将您的 Data Wrangler 流导出到 Feature Store。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择 **Amazon F SageMaker eature Store（通过 Jupyter 笔记本**）。

1. 运行 Jupyter 笔记本。

![显示如何在 Data Wrangler 管理控制台中导出 Data Wrangler 流程的数据流示例。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


运行 Jupyter 笔记本会运行 Data Wrangler 作业。运行 Data Wrangler 作业会启动 A SageMaker I 处理作业。处理作业会将流提取到在线和离线特征存放区中。

**重要**  
用于运行此笔记本的 IAM 角色必须附加以下 AWS 托管式策略：`AmazonSageMakerFullAccess` 和 `AmazonSageMakerFeatureStoreAccess`。

创建特征组时，您只需要启用一个在线或离线特征存放区。您也可以同时启用这两个特征存放区。要禁用在线存储创建，请将 `EnableOnlineStore` 设置为 `False`：

```
# Online Store Configuration
online_store_config = {
    "EnableOnlineStore": {{False}}
}
```

笔记本使用您导出的数据框的列名和类型来创建特征组架构，该架构用于创建特征组。特征组是在特征存放区中为描述记录而定义的一组特征。特征组定义了其中包含的架构和特征。特征组定义由特征列表、记录标识符特征名称、事件时间特征名称以及其在线存储和离线存储的配置组成。

特征组中的每个特征可以具有以下类型之一：*字符串*、*得分*或*整数*。如果导出的数据框中的某列不是这些类型之一，则默认为 `String`。

以下是特征组架构的示例。

```
column_schema = [
    {
        "name": "{{Height}}",
        "type": "{{long}}"
    },
    {
        "name": "{{Input}}",
        "type": "{{string}}"
    },
    {
        "name": "{{Output}}",
        "type": "{{string}}"
    },
    {
        "name": "{{Sum}}",
        "type": "{{string}}"
    },
    {
        "name": "{{Time}}",
        "type": "{{string}}"
    }
]
```

此外，您必须指定记录标识符名称和事件时间特征名称：
+ *记录标识符名称*是特征的名称，其值可以唯一标识在特征存放区中定义的记录。在线存储中仅存储每个标识符值的最新记录。记录标识符特征名称必须是特征定义名称之一。
+ *事件时间特征名称*是将记录的 `EventTime` 存储在特征组中的特征的名称。`EventTime` 是发生新事件的时间点，该事件对应于特征中记录的创建或更新。特征组中的所有记录都必须具有相应的 `EventTime`。

笔记本使用这些配置来创建特征组，大规模处理您的数据，然后将处理后的数据提取到您的在线和离线特征存放区中。要了解更多信息，请参阅[数据来源和摄取](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)。

------

笔记本使用这些配置来创建特征组，大规模处理您的数据，然后将处理后的数据提取到您的在线和离线特征存放区中。要了解更多信息，请参阅[数据来源和摄取](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)。

## 重新拟合整个数据集的转换并导出
<a name="data-wrangler-data-export-fit-transform"></a>

导入数据时，Data Wrangler 会使用数据样本来应用编码。默认情况下，Data Wrangler 使用前 50000 行作为样本，不过您可以导入整个数据集或使用不同的采样方法。有关更多信息，请参阅 [导入](data-wrangler-import.md)。

以下转换使用您的数据，在数据集内创建列：
+ [对分类数据进行编码](data-wrangler-transform.md#data-wrangler-transform-cat-encode)
+ [特征化文本](data-wrangler-transform.md#data-wrangler-transform-featurize-text)
+ [处理异常值](data-wrangler-transform.md#data-wrangler-transform-handle-outlier)
+ [处理缺失值](data-wrangler-transform.md#data-wrangler-transform-handle-missing)

如果您已使用采样来导入数据，则前面的转换仅使用样本中的数据来创建列。转换可能没有使用所有相关数据。例如，如果您使用**对分类进行编码**转换，则整个数据集内可能存在样本中不存在的类别。

您可以使用目标节点或 Jupyter 笔记本重新拟合整个数据集的转换。当 Data Wrangler 在流程中导出转换时，它会创建一个 SageMaker 处理作业。当处理作业完成后，Data Wrangler 会将以下文件保存到默认 Amazon S3 位置或您指定的 S3 位置：
+ Data Wrangler 流文件，用于指定要为数据集重新拟合的转换
+ 已应用了重新拟合转换的数据集

您可以在 Data Wrangler 中打开 Data Wrangler 流文件，然后将转换应用于不同的数据集。例如，如果您已将转换应用于训练数据集，则可以打开并使用 Data Wrangler 流文件将转换应用于用于推理的数据集。

有关使用目标节点重新拟合转换和导出的信息，请参阅以下页面：
+ [导出到 Amazon S3](#data-wrangler-data-export-s3)
+ [导出到 Amazon SageMaker 特色商店](#data-wrangler-data-export-feature-store)

使用以下步骤运行 Jupyter 笔记本来重新拟合转换并导出数据。

要运行 Jupyter 笔记本并重新拟合转换并导出 Data Wrangler 流，请执行以下操作。

1. 选择要导出的节点旁边的 **\+**。

1. 选择**导出目标**。

1. 选择要将数据导出到的位置。

1. 对于 `refit_trained_params` 对象，将 `refit` 设置为 `True`。

1. 对于 `output_flow` 字段，指定带有重新拟合转换的输出流文件的名称。

1. 运行 Jupyter 笔记本。

## 创建自动处理新数据的计划
<a name="data-wrangler-data-export-schedule-job"></a>

如果您要定期处理数据，则可以创建一个计划来自动运行处理作业。例如，您可以创建一个计划，该计划在获得新数据时自动运行处理作业。有关处理作业的更多信息，请参阅 [导出到 Amazon S3](#data-wrangler-data-export-s3) 和 [导出到 Amazon SageMaker 特色商店](#data-wrangler-data-export-feature-store)。

创建作业时，必须指定有权创建该作业的 IAM 角色。默认情况下，您访问 Data Wrangler 所使用的 IAM 角色是 `SageMakerExecutionRole`。

以下权限允许 Data Wrangler 访问 EventBridge 和运行处理作业： EventBridge 
+ 将以下 AWS 托管策略添加到 Amazon SageMaker Studio Classic 执行角色中，该角色为 Data Wrangler 提供使用权限： EventBridge

  ```
  arn:aws:iam::aws:policy/AmazonEventBridgeFullAccess
  ```

  有关该策略的更多信息，请参阅[的AWS 托管策略 EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-identity-based.html#eb-full-access-policy)。
+ 将以下策略添加到您在 Data Wrangler 中创建作业时指定的 IAM 角色：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "sagemaker:StartPipelineExecution",
              "Resource": "arn:aws:sagemaker:{{us-east-1}}:{{111122223333}}:pipeline/data-wrangler-*"
          }
      ]
  }
  ```

------

  如果您使用的是默认 IAM 角色，则可以将上述策略添加到 Amazon SageMaker Studio Classic 执行角色中。

  将以下信任策略添加到角色中 EventBridge 以允许代入该角色。

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
  }
  ```

**重要**  
当您创建计划时，Data Wrangler 会创建一个输入。`eventRule` EventBridge您需要为创建的事件规则以及用于运行处理作业的实例都支付费用。  
有关 EventBridge 定价的信息，请参阅 [Amazon EventBridge 定价](https://aws.amazon.com/eventbridge/pricing/)。有关处理任务定价的信息，请参阅 [Amazon SageMaker 定价](https://aws.amazon.com/sagemaker/pricing/)。

使用以下方法之一设置计划：
+ [Cron 表达式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
**注意**  
Data Wrangler 不支持以下表达式：  
LW\#
天的缩写
月份的缩写
+ [Rate 表达式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-rate-expressions)
+ 重复 – 设置每小时或每天运行作业的时间间隔。
+ 特定时间 – 设置运行作业的特定日期和时间。

以下各个部分提供了作业创建过程。

------
#### [ CRON ]

使用以下步骤创建带有 CRON 表达式的计划。

要使用 CRON 表达式指定计划，请执行以下操作。

1. 打开您的 Data Wrangler 流。

1. 选择**创建作业**。

1. （可选）对于**输出 KMS 密** AWS KMS 钥，请指定一个密钥来配置任务的输出。

1. 选择**下一步，2. 配置作业**。

1. 选择**关联计划**。

1. 选择**创建新计划**。

1. 对于**计划名称**，指定计划的名称。

1. 对于**运行频率**，选择 **CRON**。

1. 指定有效的 CRON 表达式。

1. 选择**创建**。

1. （可选）选择**添加其他计划**以按其他计划运行作业。
**注意**  
您最多可以关联两个计划。这些计划是独立的，除非时间重叠，否则不会相互影响。

1. 选择下列选项之一：
   + **计划并立即运行** – Data Wrangler 作业会立即运行，随后按计划运行。
   + **仅限计划** – Data Wrangler 作业仅按您指定的计划运行。

1. 选择**运行**。

------
#### [ RATE ]

使用以下步骤创建带有 RATE 表达式的计划。

要使用 RATE 表达式指定计划，请执行以下操作。

1. 打开您的 Data Wrangler 流。

1. 选择**创建作业**。

1. （可选）对于**输出 KMS 密** AWS KMS 钥，请指定一个密钥来配置任务的输出。

1. 选择**下一步，2. 配置作业**。

1. 选择**关联计划**。

1. 选择**创建新计划**。

1. 对于**计划名称**，指定计划的名称。

1. 对于**运行频率**，选择 **Rate**。

1. 对于**值**，指定一个整数。

1. 对于**匹配程序**，选择以下项之一：
   + **分钟**
   + **小时**
   + **天**

1. 选择**创建**。

1. （可选）选择**添加其他计划**以按其他计划运行作业。
**注意**  
您最多可以关联两个计划。这些计划是独立的，除非时间重叠，否则不会相互影响。

1. 选择下列选项之一：
   + **计划并立即运行** – Data Wrangler 作业会立即运行，随后按计划运行。
   + **仅限计划** – Data Wrangler 作业仅按您指定的计划运行。

1. 选择**运行**。

------
#### [ Recurring ]

通过以下步骤创建定期运行作业的计划。

要使用 CRON 表达式指定计划，请执行以下操作。

1. 打开您的 Data Wrangler 流。

1. 选择**创建作业**。

1. （可选）对于**输出 KMS 密** AWS KMS 钥，请指定一个密钥来配置任务的输出。

1. 选择**下一步，2. 配置作业**。

1. 选择**关联计划**。

1. 选择**创建新计划**。

1. 对于**计划名称**，指定计划的名称。

1. 对于**运行频率**，确保默认选中**重复**。

1. 对于**每 x 小时**，指定作业在一天中运行的每小时频率。有效值为 **1** 和 **23** 范围的整数（含）。

1. 对于**日期**，选择以下选项之一：
   + **每天**
   + **周末**
   + **工作日**
   + **选择日期**

   1. （可选）如果您选择了**选择日期**，请选择在一周中的哪几天运行作业。
**注意**  
计划会每天重置。如果您计划每五小时运行一次作业，则作业将在一天中的以下时间运行：  
00:00
05:00
10:00
15:00
20:00

1. 选择**创建**。

1. （可选）选择**添加其他计划**以按其他计划运行作业。
**注意**  
您最多可以关联两个计划。这些计划是独立的，除非时间重叠，否则不会相互影响。

1. 选择下列选项之一：
   + **计划并立即运行** – Data Wrangler 作业会立即运行，随后按计划运行。
   + **仅限计划** – Data Wrangler 作业仅按您指定的计划运行。

1. 选择**运行**。

------
#### [ Specific time ]

通过以下过程创建在特定时间运行作业的计划。

要使用 CRON 表达式指定计划，请执行以下操作。

1. 打开您的 Data Wrangler 流。

1. 选择**创建作业**。

1. （可选）对于**输出 KMS 密** AWS KMS 钥，请指定一个密钥来配置任务的输出。

1. 选择**下一步，2. 配置作业**。

1. 选择**关联计划**。

1. 选择**创建新计划**。

1. 对于**计划名称**，指定计划的名称。

1. 选择**创建**。

1. （可选）选择**添加其他计划**以按其他计划运行作业。
**注意**  
您最多可以关联两个计划。这些计划是独立的，除非时间重叠，否则不会相互影响。

1. 选择下列选项之一：
   + **计划并立即运行** – Data Wrangler 作业会立即运行，随后按计划运行。
   + **仅限计划** – Data Wrangler 作业仅按您指定的计划运行。

1. 选择**运行**。

------

您可以使用 Amazon SageMaker Studio Classic 查看计划运行的作业。处理作业在 Pipelines 中运行。每个处理作业都有各自的管道。作业作为管道中的一个处理步骤运行。您可以查看已在管道中创建的计划。有关查看管道的信息，请参阅 [查看管道详情](pipelines-studio-list.md)。

通过以下过程查看您已计划的作业。

要查看您已计划的作业，请执行以下操作。

1. 打开 Amazon SageMaker Studio 经典版。

1. 打开 Pipelines

1. 查看用于您已创建的作业的管道。

   运行作业的管道使用作业名称作为前缀。例如，如果您创建了一个名为 `housing-data-feature-enginnering` 的作业，则管道的名称为 `data-wrangler-housing-data-feature-engineering`。

1. 选择包含您的作业的管道。

1. 查看管道的状态。管道**状态**为**成功**时表示已成功运行处理作业。

要停止运行处理作业，请执行以下操作：

要停止运行处理作业，请删除指定计划的事件规则。删除事件规则时，会使与该计划关联的所有作业停止运行。有关删除规则的信息，请参阅[禁用或删除 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-delete-rule.html)。

您还可以停止和删除与计划关联的管道。有关停止管道的信息，请参见[StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)。有关删除管道的信息，请参阅[DeletePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeletePipeline.html#API_DeletePipeline_RequestSyntax)。