

# 在 AWS Glue Studio 中使用数据准备配方
<a name="glue-studio-data-preparation"></a>

 借助**数据准备配方**转换，您可以使用交互式网格创作界面全新创作数据准备方法。此外您还可以导入现有的 AWS Glue DataBrew 配方，然后在 AWS Glue Studio 中对其进行编辑。

 **数据准备配方**节点可从“资源”面板中找到。您可以将**数据准备配方**节点连接到可视化工作流程中的另一个节点，无论它是数据来源节点还是其他转换节点。选择 AWS Glue DataBrew 配方和版本后，配方中应用的步骤将显示在节点属性选项卡中。

## 先决条件
<a name="glue-studio-databrew-prerequisites"></a>
+  要导入 AWS Glue DataBrew 配方，您需要拥有 [在 AWS Glue Studio 中导入 AWS Glue DataBrew 配方](glue-studio-data-preparation-import-recipe.md) 中描述的必要 IAM 权限。
+  必须创建数据预览会话。

## 限制
<a name="glue-studio-databrew-limitations"></a>
+  仅 [商业 DataBrew 区域](https://docs.aws.amazon.com/general/latest/gr/databrew.html)才支持 AWS Glue DataBrew 配方。
+  并非所有 AWS Glue DataBrew 配方都受 AWS Glue 支持。有些配方将无法在 AWS Glue Studio 中运行。
  +  不支持含有 `UNION` 和 `JOIN` 转换的配方，不过 AWS Glue Studio 已经拥有“Join”和“Union”转换节点，这些节点可以在**数据准备配方**节点之前或之后使用。
+  从 AWS Glue 4.0 版开始的作业支持**数据准备配方**节点。在作业中添加**数据准备配方**节点后，将自动选择此版本。
+  **数据准备配方**节点需要 Python。当向作业中添加**数据准备配方**节点时，会自动设置此值。
+  如果向可视化图表添加新的**数据准备配方**节点，则将自动使用正确的库重新启动数据预览会话，以便使用该**数据准备配方**节点。
+  不支持导入或在**数据准备配方**节点中编辑以下转换：`GROUP_BY`、`PIVOT`、`UNPIVOT` 和 `TRANSPOSE`。

## 其他功能
<a name="glue-studio-data-preparation-recipe-transform-features"></a>

 选择**数据准备配方**转换后，将可以在选择**创作配方**后执行其他操作。
+  添加步骤 – 您可以根据需要选择“添加步骤”图标向配方添加其他步骤，也可以选择某个操作来使用“预览”窗格中的工具栏。  
![\[屏幕截图显示了“添加配方”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/add-recipe-icon.png)  
![\[屏幕截图显示了“添加配方”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-toolbar.png)
+  导入配方 – 选择**更多**，然后选择**导入配方**以用于您的 AWS Glue Studio 作业。  
![\[屏幕截图显示了“更多”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-recipe-node-more-icon.png)  
![\[屏幕截图显示了“更多”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-recipe-node-more-features.png)
+  下载为 YAML – 选择**更多**，然后选择**下载为 YAML** 以下载配方并在 AWS Glue Studio 之外保存。
+  下载为 JSON – 选择**更多**，然后选择**下载为 JSON** 以下载配方并在 AWS Glue Studio 之外保存。
+  撤销和重做配方步骤 – 在网格中使用数据时，可以在“预览”窗格中撤销和重做配方步骤。  
![\[屏幕截图显示了“更多”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)

# 在可视化 ETL AWS Glue 作业中创作和运行数据准备配方
<a name="glue-studio-data-preparation-recipe-transform-tutorial"></a>

 在此场景中，您可以创作数据准备配方，而无需首先在 DataBrew 中创建配方。您必须满足以下条件后才能开始创作配方：
+  已有活动的“数据预览”会话在运行。当数据预览会话准备就绪后，**创作配方**将会激活，并且您可以开始创作或编辑配方。  
![\[屏幕截图显示数据预览会话的状态为“已完成”。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-recipe-data-preview-complete.png)
+  确保启用了**自动导入 Glue 库**切换开关。  
![\[屏幕截图显示“自动导入 Glue 库”选项已启用。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-recipe-automatically-import-glue-libraries.png)

   您可以通过选择“数据预览”窗格中的齿轮图标来执行此操作。  
![\[屏幕截图显示“自动导入 Glue 库”选项已启用。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preview-preferences.png)

**在 AWS Glue Studio 中创作数据准备配方：**

1.  将**数据准备配方**转换添加到作业画布中。您的转换应会连接到数据来源节点父级。添加**数据准备配方**节点时，该节点将使用相关库重新启动，并且您会看到正在准备数据帧。  
![\[屏幕截图显示在添加数据准备配方后正在加载数据帧。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-preparing-dataframe.png)

1.  “数据预览”会话准备就绪后，包含任何先前所应用步骤的数据将显示在屏幕底部。

1.  选择**创作配方**。这将让您可以在 AWS Glue Studio 中创建新配方。  
![\[屏幕截图显示了“转换”面板，其中包含“名称”和“节点”父级字段，以及“创作配方”选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/data-preparation-recipe-transform-tab-new.png)

1.  在作业画布右侧的**转换**面板中，输入数据准备配方的名称。

1.  左侧画布将被替换为数据的网格视图。右侧的**转换**面板将变为显示配方步骤。选择**添加步骤**，以添加配方中的第一个步骤。  
![\[屏幕截图显示了选择“添加步骤”后的“转换”面板。选择某一列时，相关选项将动态变化。您可以选择排序、对列执行操作以及筛选值。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-preview-data-transform-panel.png)

1.  在**转换**面板中，选择排序、对列执行操作以及筛选值。例如，选择**重命名列**。  
![\[屏幕截图显示了选择“添加步骤”后的“转换”面板。选择某一列时，相关选项将动态变化。您可以选择排序、对列执行操作以及筛选值。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-add-step.png)

1.  在右侧的“转换”面板中，通过重命名列的选项，您可以选择要重命名的源列并输入新的列名。完成后，选择**应用**。

    您可以预览每个步骤、撤销步骤、对步骤重新排序以及使用任何操作图标，例如“筛选”、“排序”、“拆分”、“合并”等。在数据网格中执行操作时，这些步骤将被添加到“转换”面板中的配方中。  
![\[屏幕截图显示了“预览”数据网格，其中突出显示了工具栏。您可以使用其中的任何工具来应用操作，并且该操作将被添加到右侧“转换”面板中的配方中。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-preview-data-grid.png)

    如果需要进行更改，可以在“预览”窗格中预览每个步骤的结果、撤销某个步骤并对步骤重新排序，从而完成更改。例如：
   +  撤销/重做步骤 – 选择**撤销**图标即可撤销步骤。选择**重做**图标可以重复某个步骤。  
![\[屏幕截图显示了“更多”图标。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)
   +  对步骤重新排序 – 对某个步骤重新排序时，AWS Glue Studio 将验证每个步骤并告知您该步骤是否无效。

1.  应用某个步骤后，“转换”面板将显示配方中的所有步骤。您可以清除所有步骤以重新开始，选择“添加”图标以添加更多步骤，或选择**完成创作配方**。  
![\[屏幕截图显示了“转换”面板，其中包含添加到配方中的步骤。完成后，选择完成创作配方或选择“添加”图标以向配方添加更多步骤。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/author-recipe-done-authoring-recipe.png)

1.  选择屏幕右上角的**保存**。在您保存作业之前将不会保存配方步骤。

# 在 AWS Glue Studio 中导入 AWS Glue DataBrew 配方
<a name="glue-studio-data-preparation-import-recipe"></a>

 在 AWS Glue DataBrew 中，配方是数据转换步骤的集合。AWS Glue DataBrew 配方规定了如何转换已读取的数据，但没有描述在何处如何读取数据，以及如何在何处写入数据。这是在 AWS Glue Studio 的“源节点”和“目标节点”中配置。有关配方的更多信息，请参阅 [Creating and using AWS Glue DataBrew recipes](https://docs.aws.amazon.com/databrew/latest/dg/recipes.html)。

 要在 AWS Glue Studio 中使用 AWS Glue DataBrew 配方，请先在 AWS Glue DataBrew 中创建配方。如果您已有要使用的配方，则可跳过这一步。

## AWS Glue DataBrew 的 IAM 权限
<a name="glue-studio-databrew-permissions"></a>

 本主题提供的信息可帮助您了解 IAM 管理员了解可以在数据准备配方转换的 AWS Identity and Access Management（IAM）policy 中使用的操作和资源。

 有关 AWS Glue 中的其他安全信息，请参阅 [Access Management](https://docs.aws.amazon.com/glue/latest/dg/security.html)。

**注意**  
 下表列举了用户导入现有 AWS Glue DataBrew 配方时需要的权限。


**数据准备配方转换操作**  

| Action | 说明 | 
| --- | --- | 
| databrew:ListRecipes | 授予检索 AWS Glue DataBrew 配方的权限。 | 
| databrew:ListRecipeVersions | 授予检索 AWS Glue DataBrew 配方版本的权限。 | 
| databrew:DescribeRecipe | 授予检索 AWS Glue DataBrew 配方描述的权限。 | 



 您用于访问此功能的角色应包含一个允许多项 AWS Glue DataBrew 操作的策略。您可以通过使用包含必要操作的 `AWSGlueConsoleFullAccess` 策略或在角色中添加以下内联策略来实现此目的：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "databrew:ListRecipes",
        "databrew:ListRecipeVersions",
        "databrew:DescribeRecipe"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------



 要使用数据准备配方转换，必须将 `IAM:PassRole` 操作添加到权限策略中。


**其他必需的权限**  

| Action | 说明 | 
| --- | --- | 
| iam:PassRole | 向 IAM 授予权限，允许用户传递已批准的角色。 | 

如果没有这些权限，则会发生以下错误：

```
"errorCode": "AccessDenied"
"errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not 
authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole 
because no identity-based policy allows the iam:PassRole action"
```



## 导入 AWS Glue DataBrew 配方
<a name="glue-studio-databrew-import-steps"></a>

**导入 AWS Glue DataBrew 配方并在 AWS Glue Studio 中使用：**

 如果已有**数据准备配方**节点，并且想要直接 AWS Glue Studio 在中编辑配方步骤，则必须将配方步骤导入到 AWS Glue Studio 作业中。

1.  使用数据来源在 AWS Glue Studio 中启动 AWS Glue 作业。

1.  将**数据准备配方**节点添加到作业画布中。  
![\[屏幕截图显示了“添加节点”模式窗口，其中包含可供选择的数据准备配方。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/glue-add-node-data-preparation-recipe.png)

1.  在“转换”面板中，输入配方的名称。

1.  通过从下拉列表中选择画布上的可用节点来选择一个或多个父节点。

1.  选择**创作配方**。如果**创作配方**为灰色，则在选择父节点并完成数据预览会话之前，它不可用。  
![\[Author Data Preparation Recipe form with name field and node parents selection dropdown.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/glue-author-data-preparation-recipe.png)

1.  数据框加载并显示有关源数据的详细信息。

    选择**更多操作**图标，然后选择**导入配方**。  
![\[Data preparation interface showing "Build your Recipe" with an "Add step" button.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/glue-dataframe-import-recipe.png)

1.  使用导入配方向导完成相关步骤。在步骤 1 中，搜索您的配方，将其选中，然后选择**下一步**。  
![\[Import recipe interface showing two recipes, with one selected for import.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/import-recipe-step-1.png)

1.  在步骤 2 中，选择您的导入选项。您可以选择将新配方附加到现有配方或覆盖现有配方。选择**下一步**。  
![\[Import recipe interface showing selected recipe, version, and two imported steps.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/import-recipe-step-2.png)

1.  在步骤 3 中，验证配方步骤。导入 AWS Glue DataBrew 配方后，您可以直接在 AWS Glue Studio 中编辑此配方。  
![\[Recipe import interface showing two steps and a validation progress indicator.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/import-recipe-step-3.png)  
![\[Import recipe interface showing validated steps for sorting and formatting data.\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/import-recipe-step-3-validated-2.png)

1.  之后，这些步骤将作为 AWS Glue 作业的一部分导入。在**作业详细信息**选项卡中进行必要的配置更改，例如根据需要为作业命名以及调整分配的容量。选择**保存**以保存作业和配方。
**注意**  
 配方导入不支持 JOIN、UNION、GROUP\$1BY、PIVOT、UNPIVOT、TRANSPOSE 等操作，也不能在配方创作模式下使用。

1.  您也可以根据需要添加其他转换节点并添加数据目标节点，从而完成作业编写。

    如果您在导入配方后对步骤重新排序，则 AWS Glue 会对这些步骤执行验证。例如，假设您重命名某列后将其删除，然后将删除步骤移到顶部，则重命名步骤将会无效。然后您可以编辑步骤以修复验证错误。

# 从 AWS Glue DataBrew 迁移到 AWS Glue Studio
<a name="databrew-migration-to-glue-studio"></a>

 如果您在 AWS Glue DataBrew 中有配方，请使用以下清单将您的配方迁移到 AWS Glue Studio。


| 如果要… | 然后执行此操作 | 
| --- | --- | 
|  允许用户检索 AWS Glue DataBrew 配方、配方版本和配方描述。 |  向允许您的角色访问必要操作的策略添加 IAM 权限。请参阅[AWS Glue DataBrew 的 IAM 权限](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-permissions)。 | 
|  将现有 AWS Glue DataBrew 配方导入 AWS Glue Studio。 |  按照[导入 AWS Glue DataBrew 配方](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-import-steps)中的步骤操作。 | 
|  使用 JOIN 和 UNION 导入配方。 |  不支持使用 UNION 和 JOIN 转换的配方。在数据准备配方节点之前或之后，使用 AWS Glue Studio 中的 Join 和 Union 转换。 | 