

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

# 使用 AWS Glue 交互式会话准备数据
<a name="studio-notebooks-glue"></a>

[AWS Glue 交互式会话](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-overview.html)是一种无服务器服务，您可以利用它来收集、转换、清理数据，并为数据湖和数据管道中的数据存储做好准备。 AWS Glue 交互式会话提供了一个按需、无服务器的 Apache Spark 运行时环境，您可以在专用数据处理单元 (DPU) 上几秒钟内完成初始化，而无需配置和管理复杂的计算集群基础设施。初始化后，您可以直接在 Studio 或 Studio Classic 笔记本中浏览 AWS Glue 数据目录 AWS Lake Formation、运行大型查询、访问受控制的数据，以及使用 Spark 以交互方式分析和准备数据。然后，您可以使用 Studi SageMaker o 或 Studio Classic 中专门构建的机器学习工具，使用准备好的数据来训练、调整和部署模型。如果您想要对可配置性和灵活性进行适度控制的无服务器 Spark 服务，则应考虑使用 AWS Glue 交互式会话来处理数据准备工作负载。

您可以通过在 Studio 或 Studio Classic 中启动 JupyterLab 笔记本来启动 AWS Glue 交互式会话。启动笔记本时，请选择内置的 `Glue PySpark and Ray` 或 `Glue Spark` 内核。这将自动启动交互式的无服务器 Spark 会话。您无需预置或管理任何计算集群或基础设施。初始化后，您可以在 Studio 或 Studio Classic 笔记本中探索数据并与之交互。

在 Studio 或 Studio Classic 中开始 AWS Glue 互动会话之前，您需要设置相应的角色和策略。此外，您可能还需要提供对其他资源的访问权限，如 Amazon S3 存储桶。有关所需 IAM 策略的更多信息，请参阅 [Studio 或 Studio 经典版中 AWS Glue 交互式会话](getting-started-glue-sm.md#glue-sm-iam)。

Studio 和 Studio Classic 为您的 AWS Glue 交互式会话提供了默认配置，但是，您可以使用完整 AWS Glue的 Jupyter 魔法命令目录来进一步自定义您的环境。有关可在 AWS Glue 交互式会话中使用的默认和其他 Jupyter 魔法的信息，请参阅。[在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话](getting-started-glue-sm.md#glue-sm-magics)
+ 对于启动 AWS Glue 交互式会话的 Studio Classic 用户，他们可以从以下图像和内核中进行选择：
  + 映像：`SparkAnalytics 1.0`、`SparkAnalytics 2.0`
  + 内核：`Glue Python [PySpark and Ray]` 和 `Glue Spark`
+ 对于 Studio 用户，请使用默认的[SageMaker 发行版映像](https://github.com/aws/sagemaker-distribution)并选择一个`Glue Python [PySpark and Ray]`或一个`Glue Spark`内核。

# 开始使用 AWS Glue 交互式会话
<a name="getting-started-glue-sm"></a>

在本指南中，您将学习如何在 SageMaker AI Studio Classic 中启动 AWS Glue 交互式会话，以及如何使用 Jupyter 魔法管理您的环境。

## Studio 或 Studio 经典版中 AWS Glue 交互式会话
<a name="glue-sm-iam"></a>

本节列出了在 Studio 或 Studio Classic 中运行 AWS Glue 交互式会话所需的策略，并说明了如何设置这些策略。具体而言，它详细介绍了如何：
+ 将`AwsGlueSessionUserRestrictedServiceRole`托管策略附加到您的 SageMaker AI 执行角色。
+ 为您的 SageMaker AI 执行角色创建内联自定义策略。
+ 修改您的 SageMaker AI 执行角色的信任关系。

**将 `AwsGlueSessionUserRestrictedServiceRole` 托管策略附加到执行角色**

1. 打开 [IAM 控制台](https://console.aws.amazon.com/iam/)。

1. 在左侧面板中选择**角色**。

1. 查找用户配置文件中使用的 Studio Classic 执行角色。有关如何查看用户配置文件的信息，请参阅 [查看域中的用户配置文件](domain-user-profile-view.md)。

1. 选择角色名称，进入角色摘要页面。

1. 在**权限**选项卡下，从**添加权限**下拉菜单中选择**附加策略**。

1. 选中托管策略 `AwsGlueSessionUserRestrictedServiceRole` 旁的复选框。

1. 选择**附加策略**。

   摘要页面显示您新添加的托管策略。

   

**在执行角色上创建内联自定义策略**

1. 在**添加权限**下拉菜单中选择**创建内联策略**。

1. 选择 **JSON** 选项卡。

1. 复制并粘贴以下策略。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "uniqueStatementId",
   
               "Effect": "Allow",
               "Action": [
   	     "iam:GetRole",
                   "iam:PassRole",
                   "sts:GetCallerIdentity"
               ],
               "Resource": "arn:aws:iam::*:role/GlueServiceRole*"
           }
       ]
   }
   ```

------

1. 选择**查看策略**。

1. 输入**名称**，然后选择**创建策略**。

   摘要页面显示您新添加的自定义策略。

   

**修改该执行角色的信任关系**

1. 选择**信任关系**选项卡。

1. 选择**编辑信任策略**。

1. 复制并粘贴以下策略。

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

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Principal": {
               "Service": [
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
               ]
           },
           "Action": "sts:AssumeRole"
       }
   ]
   }
   ```

------

1. 选择**更新策略**。

如果您需要访问其他 AWS 资源，可以添加其他角色和策略。有关您可以包括的其他角色和策略的描述，请参阅 AWS Glue 文档中的[与 IAM 的交互式会话](https://docs.aws.amazon.com/glue/latest/dg/glue-is-security.html)。

## 标签传播
<a name="glue-sm-tag-propagation"></a>

标签通常用于跟踪和分配成本、控制会话访问权限、隔离资源等。要了解如何使用标签向 AWS 资源添加元数据，或者有关常见使用场景的详细信息，请参阅[附加信息](#more-information)。

您可以启用 AWS 标签自动传播到从 Studio 或 Studio Classic 用户界面中创建的新 AWS Glue 交互式会话。从 Studio 或 Studio Classic 创建 AWS Glue 交互式会话时，附加到用户配置文件或共享空间的任何用户[定义标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)都将转移到新的 AWS Glue 交互式会话中。此外，Studio 和 Studio Classic 会自动将两个 AWS生成的内部标签（（`sagemaker:user-profile-arn`和`sagemaker:domain-arn`）或（`sagemaker:shared-space-arn`和`sagemaker:domain-arn`））添加到通过其用户界面创建的新 AWS Glue 交互式会话中。您可以使用这些标签汇总各个域、用户配置文件或空间的成本。

### 启用标签传播
<a name="enable-propagation"></a>

要启用标签自动传播到新的 AWS Glue 交互式会话，请为您的 A SageMaker I 执行角色和与您的会 AWS Glue 话关联的 IAM 角色设置以下权限：

**注意**  
默认情况下，与 AWS Glue 交互式会话关联的角色与 SageMaker AI 执行角色相同。您可以使用 m `%iam_role` agic 命令为 AWS Glue 交互式会话指定不同的执行角色。有关可用于配置 AWS Glue 交互式会话的 Jupyter magic 命令的信息，请参阅[在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话](#glue-sm-magics)。
+ *在你的 SageMaker AI 执行角色上*：创建新的内联策略，然后粘贴以下 JSON 文件。该策略授予执行角色描述（`DescribeUserProfile`、`DescribeSpace`、`DescribeDomain`）和列出在用户个人资料、共享空间和 SageMaker AI 域上设置的标签 (`ListTag`) 的权限。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:ListTags"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*",
          "arn:aws:sagemaker:*:*:space/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeUserProfile"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:user-profile/*"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeSpace"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:space/*"
      ]
  }
  {
      "Effect": "Allow",
      "Action": [
          "sagemaker:DescribeDomain"
      ],
      "Resource": [
          "arn:aws:sagemaker:*:*:domain/*"
      ]
  }
  ```
+ *在您 AWS Glue 会话的 IAM 角色上*：创建新的内联策略，然后粘贴以下 JSON 文件。该策略授予您的角色向会话附加标签 (`TagResource`) 或检索其标签列表 (`GetTags`) 的权限。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "glue:TagResource",
          "glue:GetTags"
      ],
      "Resource": [
          "arn:aws:glue:*:*:session/*"
      ]
  }
  ```

**注意**  
应用这些权限时发生的失败不会阻止 AWS Glue 交互式会话的创建。您可以在 Studio 或 Studio Classic [CloudWatch](https://docs.aws.amazon.com//sagemaker/latest/dg/monitoring-cloudwatch.html)日志中找到有关失败原因的详细信息。
必须重新启动交 AWS Glue 互式会话的内核才能传播标签值的更新。

请务必记住以下几点：
+ 标签附加到会话之后，就无法通过传播将其删除。

  您可以直接通过 AWS CLI、 AWS Glue API 或从 AWS Glue 交互式会话中移除标签[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。例如，使用 AWS CLI，您可以通过提供会话的 ARN 和要移除的标签密钥来移除标签，如下所示：

  ```
  aws glue untag-resource \
  --resource-arn arn:aws:glue:region:account-id:session:session-name \
  --tags-to-remove tag-key1,tag-key2
  ```
+ Studio 和 Studio AWS Classic 向通过其用户界面创建的新 AWS Glue 交互式会话添加两个生成的内部标签（`sagemaker:user-profile-arn``sagemaker:shared-space-arn`和 `sagemaker:domain-arn``sagemaker:domain-arn`）或（和））。这些标签计入所有 AWS 资源上设置的 50 个标签的上限。`sagemaker:user-profile-arn` 和 `sagemaker:shared-space-arn` 都包含它们所属的域 ID。
+ 以`aws:``AWS:`、或任何大小写字母组合作为密钥前缀的标签密钥不会被传播，而是保留供 AWS 使用。

### 附加信息
<a name="more-information"></a>

有关标记更多信息，请参阅以下资源。
+ 要了解如何使用标签向 AWS 资源添加元数据，请参阅为资源添加[标签 AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)。
+ 有关使用标记跟踪成本的信息，请参阅 Studio 管理最佳实践中的[成本分析](https://docs.aws.amazon.com/whitepapers/latest/sagemaker-studio-admin-best-practices/cost-attribution.html)。
+ 有关 AWS Glue 根据标签密钥控制访问权限的信息，请参阅 [ABAC with](glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-tags)。 AWS Glue

## 在 Studio 或 Studio 经典版上启动 AWS Glue 互动会话
<a name="glue-sm-launch"></a>

创建角色、策略和 SageMaker AI 域后，您可以在 Studio 或 Studio Classic 中启动 AWS Glue 交互式会话。

1. 登录 SageMaker AI 控制台，网址为[https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)。

1. 从左侧导航窗格中选择 **Studio**。

1. 从 Studio 登录页面，选择启动 Studio 所需的域和用户配置文件。

1. 选择 **Open Studio** 并启动 JupyterLab 或 Studio 经典版应用程序。

1. 在 Jupyter 视图中，依次选择**文件**、**新建**和**笔记本**。

1. 对于 Studio Classic 用户：在**图像**下拉菜单中，选择 **SparkAnalytics 1.0** 或 **SparkAnalytics2.0**。在**内核**下拉菜单中，选择 **Glue Spark** 或 G **lue Python [PySpark 和 Ray]**。选定**选择**。

   对于 Studio 用户，请选择 **Glue Spark** 或 **Glue Python [PySpark 和 Ray]** 内核

1. （可选）使用 Jupyter magic 来自定义环境。有关 Jupyter magic 的更多信息，请参阅[在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话](#glue-sm-magics)。

1. 开始编写 Spark 数据处理脚本。以下[笔记本](https://github.com/aws/amazon-sagemaker-examples/blob/main/use-cases/pyspark_etl_and_training/pyspark-etl-training.ipynb)展示了大型数据集上的 ETL end-to-end 工作流程，包括 AWS Glue 交互式会话、探索性数据分析、数据预处理，最后使用 AI 在处理后的数据上训练模型。 SageMaker 

## 在 Studio 或 Studio 经典版中配置 AWS Glue 互动会话
<a name="glue-sm-magics"></a>

**注意**  
在 AWS Glue 内核的生命周期内，所有神奇的配置都将延续到后续会话中。

你可以在 AWS Glue 交互式会话中使用 Jupyter 魔法来修改会话和配置参数。Magic 是在 Jupyter 单元开头以 `%` 为前缀的简短命令，它提供了一种快速简便的方法来帮助您控制环境。在你的 AWS Glue 互动会话中，默认会为你设置以下魔法：


| Magic | 默认 值 | 
| --- | --- | 
| %glue\$1version |  3.0  | 
| %iam\$1role |  *execution role attached to your SageMaker AI domain*  | 
| %region |  您的区域  | 

您可以使用 magic 来进一步自定义环境。例如，如果您想将分配给作业的工作线程数从默认的 5 更改为 10，则可以指定 `%number_of_workers 10`。如果要将会话配置为在空闲时间 10 分钟后停止，而不是默认的 2880，则可以指定 `%idle_timeout 10`。

目前所有可用的 Jupyter 魔法也在 AWS Glue Studio 或 Studio Classic 中可用。有关可用 AWS Glue 魔法的完整列表，请参阅[为 Jupyter 和 AWS Glue Studio 笔记本电脑配置 AWS Glue 交互式会话](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html)。

# AWS Glue 交互式会话定价
<a name="glue-sm-pricing"></a>

在 Studio 或 Studio Classic 笔记本电脑上使用 AWS Glue 交互式会话时，您需要分别为 AWS Glue 和 Studio 笔记本电脑上的资源使用量付费。

AWS AWS Glue 交互式会话的费用取决于会话处于活动状态的时间和使用的数据处理单元 (DPU) 的数量。您需要为 DPUs 用于运行工作负载的数量按小时费率收费，以一秒为增量计费。 AWS Glue 交互式会话默认分配五个 DPUs ，至少需要两 DPUs个。此外，每个交互式会话的最低计费时间长度为 1 分钟。要查看 AWS Glue 费率和定价示例，或者要使用 AWS 定价计算器估算成本，请参阅[AWS Glue 定价](https://aws.amazon.com/glue/pricing)。

您的 Studio 或 Studio Classic 笔记本在 Amazon EC2 实例上运行，您选择的实例类型将根据使用时间收费。选择 `ml-t3-medium` 映像和相关内核时，Studio Classic 会为您分配一个默认的 EC2 实例类型 `SparkAnalytics`。您可以更改 Studio Classic 笔记本的实例类型，以适应您的工作负载。有关 Studio 和 Studio 经典版定价的信息，请参阅 [Amazon SageMaker 定价](https://aws.amazon.com/sagemaker/pricing)。