

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

# 使用 Amazon EMR Studio
<a name="use-an-emr-studio"></a>

本节中的主题有助于您配置 Amazon EMR Studio 并与之交互。

以下视频介绍了实用信息，例如如何创建新的 Workspace 以及如何使用集群模板启动新的 Amazon EMR 集群。该视频还演示了如何运行示例 Notebook。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/rZ3zeJ6WKPY/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/rZ3zeJ6WKPY)


**Topics**
+ [了解 EMR Studio Workspaces](emr-studio-configure-workspace.md)
+ [在 EMR Studio 中配置 Workspace 协作](emr-studio-workspace-collaboration.md)
+ [使用运行时系统角色运行 EMR Studio Workspace](emr-studio-runtime.md)
+ [以编程方式运行 Amazon EMR Studio Workspace Notebooks](emr-studio-run-programmatically.md)
+ [使用 SQL Explorer for EMR Studio 浏览数据](emr-studio-sql-explorer.md)
+ [将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)
+ [将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md)
+ [在 EMR Studio 中使用 Amazon Athena SQL 编辑器](emr-studio-athena.md)
+ [Amazon 与 EMR Studio 工作区 CodeWhisperer 集成](emr-studio-codewhisperer.md)
+ [使用 EMR Studio 调试应用程序和任务](emr-studio-debug.md)
+ [在 EMR Studio Workspace 中安装内核和库](emr-studio-install-libraries-and-kernels.md)
+ [在 EMR Studio 中使用 magic 命令增强内核](emr-studio-magics.md)
+ [将多语言 Notebooks 与 Spark 内核配合使用](emr-multi-language-kernels.md)

# 了解 EMR Studio Workspaces
<a name="emr-studio-configure-workspace"></a>

使用 EMR Studio 后，您可以创建和配置不同的 *Workspaces* 来组织和运行 Notebook。本部分介绍了创建与使用 Workspaces。有关概念性概述，请参阅第 [Amazon EMR Studio 工作原理](how-emr-studio-works.md) 页上的 [Workspaces](how-emr-studio-works.md#emr-studio-workspaces)。

**Topics**
+ [创建 EMR Studio Workspace](emr-studio-create-workspace.md)
+ [在 EMR Studio 中启动 Workspace](emr-studio-use-workspace.md)
+ [了解 EMR Studio Workspace 用户界面](emr-studio-workspace-ui.md)
+ [在 EMR Studio Workspace 中浏览 Notebook 示例](emr-studio-notebook-examples.md)
+ [在 EMR Studio 中保存 Workspace 内容](emr-studio-save-workspace.md)
+ [在 EMR Studio 中删除 Workspace 和 Notebook 文件](emr-studio-delete-workspace.md)
+ [了解 Workspace 状态](emr-studio-workspace-status.md)
+ [解决 Workspace 连接问题](emr-studio-workspace-stop-start.md)

# 创建 EMR Studio Workspace
<a name="emr-studio-create-workspace"></a>

您可以创建 EMR Studio Workspaces 以使用 EMR Studio 界面运行 Notebook 代码。

**在 EMR Studio 中创建 Workspace**

1. 登录 EMR Studio。

1. 选择**创建 Workspace**。

1. 输入 **Workspace name (Workspace 名称)** 和 **Description (描述)**。命名 Workspace 有助于您在 **Workspaces** 页面上识别它。

1. 要与此 Workspace 中的其他 Studio 用户实时协作，可启用 Workspace 协作功能。启动 Workspace 后，您可以配置协作者。

1. 如果要将集群连接到 Workspace，请展开**高级配置**部分。如果愿意，可在稍后连接集群。有关更多信息，请参阅 [将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)。
**注意**  
要预置新集群，您需要从管理员处获取访问权限。

   为 Workspace 选择其中一个集群选项并附加集群。有关在创建 Workspace 时预置集群的更多信息，请参阅 [创建新的 EMR 集群并将其附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md#emr-studio-create-cluster)。

1. 选择页面右下角的**创建 Workspace**。

创建 Workspace 后，EMR Studio 将打开 **Workspaces** 页面。您将在页面顶部看到一个绿色的成功横幅，并且可以在列表中找到新创建的 Workspace。

预设情况下，Workspace 是共享的，所有 Studio 用户都可以看到。但一次只能有一个用户打开一个 Workspace 并在其中工作。要与其他用户同时工作，您可以[在 EMR Studio 中配置 Workspace 协作](emr-studio-workspace-collaboration.md)

# 在 EMR Studio 中启动 Workspace
<a name="emr-studio-use-workspace"></a>

要开始使用 Notebook 文件，请启动 Workspace 以访问 Notebook 编辑器。Studio 中的 **Workspaces** 页面列出了您有权访问的所有 Workspace，以及 **Name**（名称）、**Status**（状态）、**Creation time**（创建时间）和 **Last modified**（上次修改时间）等详细信息。

**注意**  
如果在 Amazon EMR 旧控制台上有 EMR Notebooks，您可以在控制台中以 EMR Studio Workspaces 的形式找到它们。要访问或创建 Workspaces，EMR Notebooks 用户需要额外的 IAM 角色权限。如果您最近在旧控制台中创建了 Notebook，则可能需要刷新 Workspace 列表才能在控制台中看到它们。有关过渡的更多信息，请参阅 [Amazon EMR Notebooks 在控制台中作为 Amazon EMR Studio Workspaces 提供](emr-managed-notebooks-migration.md) 和 [使用控制台管理 Amazon EMR 集群](whats-new-in-console.md)。

**启动 Workspace 以编辑和运行 Notebook**

1. 在 Studio 的 **Workspaces** 页面上，查找 Workspace。您可以按关键字或列值来筛选列表。

1. 选择 Workspace 名称，以在新的浏览器选项卡中启动 Workspace。如果 Workspace 处于 **Idle (空闲)** 状态，系统可能需要几分钟才能打开它。另外，可以选择 Workspace 的行，然后选择**启动 Workspace**。可从以下选项中进行选择：
   + **快速启动**：使用默认选项快速启动 Workspace。如果要将集群连接到中的工作区，请选择**快速启动** JupyterLab。
   + **使用选项启动**：使用自定义选项启动 Workspace。您可以选择在 Jupyter 中启动 JupyterLab，也可以将工作空间连接到 EMR 集群，然后选择您的安全组。
**注意**  
一次只能有一个用户打开 Workspace 并在其中工作。如果您选择一个已在使用的 Workspace，当您尝试打开它时，EMR Studio 会显示一条通知。**Workspaces** 页面上的 **User (用户)** 列显示当前正在使用 Workspace 的用户。

# 了解 EMR Studio Workspace 用户界面
<a name="emr-studio-workspace-ui"></a>

EMR Studio Workspace 用户界面基于[JupyterLab界面，左侧边](https://jupyterlab.readthedocs.io/en/latest/user/interface.html)栏上有图标表示的选项卡。当您在图标上暂停时，您会看到一个工具提示，其中显示了选项卡的名称。从左侧边栏中选择选项卡以访问以下面板。
+ **File Browser (文件浏览器)**：显示 Workspace 中的文件和目录，以及链接的 Git 存储库的文件和目录。
+ **Running Kernels and Terminals (正在运行的内核和终端)**：列出在 Workspace 中运行的所有内核和终端。有关更多信息，请参阅官方 JupyterLab 文档中的[管理内核和终端](https://jupyterlab.readthedocs.io/en/latest/user/running.html)。
+ **Git**：提供图形用户界面，用于在附加到 Workspace 的 Git 存储库中执行命令。这个面板是一个 JupyterLab 名为 jupyterlab-git 的扩展。有关更多信息，请参阅 [jupyterlab-git](https://github.com/jupyterlab/jupyterlab-git)。
+ **EMR 集群**：允许将集群附加到 Workspace 或从 Workspace 分离集群，以便运行 Notebook 代码。EMR 集群配置面板还提供高级配置选项，以帮助您创建*新*集群并将其附加到 Workspace。有关更多信息，请参阅 [创建新的 EMR 集群并将其附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md#emr-studio-create-cluster)。
+ **Amazon EMR Git 存储库**：帮助您将 Workspace 与最多三个 Git 存储库链接起来。有关详细信息和说明，请参阅[将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md)。
+ **Notebook Examples (Notebook 示例)**：提供可以保存到 Workspace 的 Notebook 示例列表。您还可以通过在 Workspace 的 **Launcher (启动器)** 页面上选择 **Notebook Examples (Notebook 示例)** 来访问示例。
+ **命令**-提供一种键盘驱动的搜索和运行命令的方式。 JupyterLab 有关更多信息，请参阅 JupyterLab 文档中的[命令面板](https://jupyterlab.readthedocs.io/en/latest/user/commands.html)页面。
+ **Notebook Tools (Notebook 工具)**：允许您选择和设置单元格滑动类型和元数据等选项。**Notebook Tools (Notebook 工具)** 选项在您打开 Notebook 文件后显示在左侧边栏中。
+ **Open Tabs**（打开的选项卡）：列出主 Workspace 中打开的文档和活动，以便您可以跳转到打开的选项卡。有关更多信息，请参阅文档中的[选项卡和单文档模式](https://jupyterlab.readthedocs.io/en/latest/user/interface.html#tabs-and-single-document-mode)页面。 JupyterLab 
+ **Collaboration**（协作）：允许您启用或禁用 Workspace 协作以及管理协作者。要查看 **Collaboration**（协作）面板，您必须具有必要的权限。有关更多信息，请参阅[设置 Workspace 协作的所有权](emr-studio-user-permissions.md#emr-studio-workspace-collaboration-permissions)。

# 在 EMR Studio Workspace 中浏览 Notebook 示例
<a name="emr-studio-notebook-examples"></a>

每个 EMR Studio Workspace 都包含一组 Notebook 示例，可用于探索 EMR Studio 功能。要编辑或运行 Notebook 示例，您可以将其保存到 Workspace。

**将 Notebook 示例保存到 Workspace**

1. 从左侧边栏中，选择 **Notebook Examples (Notebook 示例)** 选项卡以打开 **Notebook Examples (Notebook 示例)** 面板。您还可以通过在 Workspace 的 **Launcher (启动器)** 页面上选择 **Notebook Examples (Notebook 示例)** 来访问示例。

1. 选择一个 Notebook 示例以在主 Workspace 中进行预览。示例是只读的。

1. 要将 Notebook 示例保存到 Workspace，请选择 **Save to Workspace (保存到 Workspace)**。EMR Studio 将示例保存在您的主目录中。将 Notebook 示例保存到 Workspace 后，您可以重命名、编辑和运行它。

有关笔记本示例的更多信息，请参阅 [EMR Studio 笔记本示例 GitHub ](https://github.com/aws-samples/emr-studio-notebook-examples)存储库。

# 在 EMR Studio 中保存 Workspace 内容
<a name="emr-studio-save-workspace"></a>

当您在 Workspace 的 Notebook 编辑器中工作时，EMR Studio 会为您将 Notebook 单元格和输出的内容保存在与 Studio 关联的 Amazon S3 位置。此备份过程可在会话之间保留工作。

您还可以通过在打开的 Notebook 选项卡中按 **CTRL\$1S** 或使用 **File (文件)** 下的其中一个保存选项保存 Notebook。

备份 Workspace 中 Notebook 文件的另一种方法是将 Workspace 与基于 Git 的存储库相关联，并将更改与远程存储库同步。这样做还可以让您与使用不同 Workspace 或 Studio 的团队成员保存和共享 Notebook。有关说明，请参阅[将基于 Git 的存储库链接到 EMR Studio Workspace](emr-studio-git-repo.md)。

# 在 EMR Studio 中删除 Workspace 和 Notebook 文件
<a name="emr-studio-delete-workspace"></a>

当您从 EMR Studio Workspace 中删除 Notebook 文件时，您会从 **File browser (文件浏览器)** 中删除该文件，并且 EMR Studio 会删除其在 Amazon S3 中的备份副本。当您从 Workspace 删除文件时，无需采取任何进一步措施来避免存储费用。

删除*整个 Workspace* 时，其 Notebook 文件和文件夹将保留在 Amazon S3 存储位置中。文件会继续产生存储费用。为避免产生存储费用，请从 Amazon S3 中删除与已删除 Workspace 关联的所有备份文件和文件夹。

**从 EMR Studio Workspace 中删除 Notebook 文件**

1. 从 Workspace 的左侧边栏中选择 **File browser (文件浏览器)** 面板。

1. 选择要删除的文件或文件夹。右键单击选定内容，然后选择 **Delete (删除)**。文件将从列表中消失。EMR Studio 会为您从 Amazon S3 中删除文件或文件夹。

------
#### [ From the Workspace UI ]

**从 EMR Studio 中删除 Workspace 及其关联的备份文件**

1. 使用您的 Studio 访问 URL 登录 EMR Studio，然后从左侧导航中选择 **Workspaces**。

1. 在列表中找到您的 Workspace，然后选中其名称旁边的复选框。您可以选择同时删除多个 Workspaces。

1. 选择 **Workspaces** 列表右上角的 **Delete (删除)** 并确认您要删除选定的 Workspaces。选择 **Delete (删除)** 以确认。

1. 按照《Amazon Simple Storage Service 控制台用户指南》****中的[删除对象](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html)说明，从 Amazon S3 中删除与已删除 Workspace 关联的 Notebook 文件。如果您没有创建 Studio，请咨询您的 Studio 管理员以确定已删除 Workspace 的 Amazon S3 备份位置。

------
#### [ From the Workspaces list ]

**从 Workspace 列表中删除 Workspace 及其关联的备份文件**

1. 在控制台中导航到 **Workspace** 列表。

1. 选择要从列表中删除的 Workspace，然后选择**操作**。

1. 选择**删除**。

1. 按照《Amazon Simple Storage Service 控制台用户指南》****中的[删除对象](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html)说明，从 Amazon S3 中删除与已删除 Workspace 关联的 Notebook 文件。如果您没有创建 Studio，请咨询您的 Studio 管理员以确定已删除 Workspace 的 Amazon S3 备份位置。

------

# 了解 Workspace 状态
<a name="emr-studio-workspace-status"></a>

创建 EMR Studio Workspace 后，它在 **Workspaces** 列表中显示为一行，其中包含其名称、状态、创建时间和上次修改时间戳。下表描述了 Workspace 的状态。


****  

| Status | 说明 | 
| --- | --- | 
| Starting (正在启动) | Workspace 正在准备中，但尚未准备好使用。当 Workspace 状态为“Starting (正在启动)”时，您无法打开它。 | 
| Ready (就绪) | 您可以打开 Workspace 以使用 Notebook 编辑器，但必须先将 Workspace 附加到 EMR 集群，然后才能运行 Notebook 代码。 | 
| Attaching (正在附加) | 正将 Workspace 附加到集群。 | 
| Attached (已附加) | Workspace 已附加到 EMR 集群，可供您编写和运行 Notebook 代码。如果 Workspace 的状态不是 Attached (已附加)，则必须先将其附加到集群，然后才能运行 Notebook 代码。 | 
| Idle (空闲) | Workspace 已停止。要重新激活空闲 Workspace，请从 Workspaces 列表中选择它。当您选择 Workspace 时，状态从 Idle (空闲) 变为 Starting (正在启动) 再变为 Ready (就绪)。 | 
| Stopping (正在停止) | Workspace 正在关闭，并将设置为空闲。停止 Workspace 时，会终止所有相应的 Notebook 内核。EMR Studio 会停止长时间处于非活动状态的 Notebook。 | 
| Deleting (正在删除) | 删除 Workspace 时，EMR Studio 会将其标记为删除并启动删除过程。删除过程完成后， Workspace 将从列表中消失。删除 Workspace 时，其 Notebook 文件将保留在 Amazon S3 存储位置中。 | 

# 解决 Workspace 连接问题
<a name="emr-studio-workspace-stop-start"></a>

要解决 Workspace 连接问题，您可以停止并重启 Workspace。当您重启 Workspace 时，EMR Studio 会在与您的 Studio 关联的其他可用区或其他子网中启动该 Workspace。

**停止并重启 EMR Studio Workspace**

1. 在浏览器中关闭该 Workspace。

1. 在控制台中导航到 **Workspace** 列表。

1. 从该列表中选择您的 Workspace，然后选择 **Actions**（操作）。

1. 选择 **Stop**（停止），然后等待 Workspace 状态从 **Stopping**（正在停止）变为 **Idle**（空闲）。

1. 再次选择 **Actions**（操作），然后选择 **Start**（启动）以重启该 Workspace。

1. 等待 Workspace 状态从 **Starting**（正在启动）变为 **Ready**（就绪），然后选择 Workspace 名称，以便在新的浏览器选项卡中重新打开它。

# 在 EMR Studio 中配置 Workspace 协作
<a name="emr-studio-workspace-collaboration"></a>

借助 Workspace 协作功能，您可以与团队的其他成员同时编写和运行 Notebook 代码。当您在同一 Notebook 文件中工作时，您会看到协作者做出的更改。您可以在创建 Workspace 时启用协作，也可以在现有 Workspace 中打开和关闭协作。

**注意**  
[EMR Serverless 交互式应用程序](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads.html)不支持 EMR Studio Workspace 协作，同样，如果启用了可信身份传播，也不支持此协作。

**先决条件**

您需要首先完成以下任务，然后才能为 Workspace 配置协作：
+ 确保您的 EMR Studio 管理员已经为您提供了必要的权限。例如，以下示例语句允许用户为任何具有标签键 `creatorUserId` 并且标签值与该用户的 ID（由策略变量 `aws:userId` 指示）一致的 WorkSpace 配置协作。

  ```
  {
      "Sid": "UserRolePermissionsForCollaboration",
      "Action": [
          "elasticmapreduce:UpdateEditor",
          "elasticmapreduce:PutWorkspaceAccess",
          "elasticmapreduce:DeleteWorkspaceAccess",
          "elasticmapreduce:ListWorkspaceAccessIdentities"
      ],
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
          "StringEquals": {
              "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userid}"
          }
      }
  }
  ```
+ 确保与 EMR Studio 关联的服务角色具有启用和配置 Workspace 协作所需的权限，如下面的示例语句所示。

  ```
  {
      "Sid": "AllowWorkspaceCollaboration",
      "Effect": "Allow",
      "Action": [
          "iam:GetUser",
          "iam:GetRole",
          "iam:ListUsers",
          "iam:ListRoles",
          "sso:GetManagedApplicationInstance",
          "sso-directory:SearchUsers"
      ],
      "Resource": "*"
  }
  ```

  有关更多信息，请参阅 [创建 EMR Studio 服务角色](emr-studio-service-role.md)。

**启用 Workspace 协作并添加协作者**

1. 在您的 Workspace 中，选择 Launcher（启动程序）屏幕或左侧面板底部的 **Collaboration**（协作）图标。
**注意**  
除非您的 Studio 管理员已经向您授予了配置 Workspace 协作的权限，否则您不会看到 **Collaboration**（协作）面板。有关更多信息，请参阅[设置 Workspace 协作的所有权](emr-studio-user-permissions.md#emr-studio-workspace-collaboration-permissions)。

1. 确保 **Allow Workspace collaboration**（允许 Workspace 协作）切换按钮位于打开位置。启用协作后，只有您和您添加的协作者才会在 Studio **Workspaces ** 页面上的列表中看到该 Workspace。

1. 输入一个 **Collaborator name**（协作者姓名）。您的 Workspace 最多可有五个协作者，包括您自己。协作者可以是有权访问 EMR Studio 的任何用户。如果您没有输入协作者，则该 Workspace 是一个只有您可以访问的私有 Workspace。

   下表根据拥有者的身份类型指定了要输入的适用的协作者值。
**注意**  
拥有者只能邀请具有相同身份类型的协作者。例如，用户只能添加其他用户，IAM Identity Center 用户只能添加其他 IAM Identity Center 用户。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-studio-workspace-collaboration.html)

1. 选择**添加**。协作者现在可以在他们的 EMR Studio **Workspaces** 页面看到该 Workspace，并且可以启动该 Workspace 以实时与您协作使用。

**注意**  
如果您禁用了 Workspace 协作，Workspace 将返回其共享状态，所有 Studio 用户都可以看到。在共享状态下，一次只有一个 Studio 用户能够打开该 Workspace 并在其中工作。

# 使用运行时系统角色运行 EMR Studio Workspace
<a name="emr-studio-runtime"></a>

**注意**  
此页描述的运行时系统角色功能仅适用于在 Amazon EC2 上运行的 Amazon EMR，并非指 EMR Serverless 交互式应用程序中的运行时系统角色功能。要详细了解如何在 EMR Serverless 中使用运行时系统角色，请参阅《Amazon EMR Serverless 用户指南》中的 [Job runtime roles](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)**。

*运行时角色*是一个 AWS Identity and Access Management (IAM) 角色，您可以在向 Amazon EMR 集群提交任务或查询时指定该角色。您提交到 EMR 集群的任务或查询使用运行时角色访问 AWS 资源，例如 Amazon S3 中的对象。

当您将 EMR Studio Workspace 附加到使用 Amazon EMR 6.11 或更高版本的 EMR 集群时，您可以为提交的任务或查询选择运行时角色，供其在访问资源时使用。 AWS 但是，如果 EMR 集群不支持运行时角色，则 EMR 集群在访问资源时不会担任该角色。 AWS 

在将运行时系统角色用于 Amazon EMR Studio Workspace 之前，管理员必须配置用户权限，以便 Studio 用户对运行时系统角色调用 `elasticmapreduce:GetClusterSessionCredentials` API。然后，启动一个具有运行时系统角色的新集群，您可以将其与 Amazon EMR Studio Workspace 配合使用。

**Topics**
+ [为运行时系统角色配置用户权限](#emr-studio-runtime-setup-permissions)
+ [使用运行时系统角色启动新集群](#emr-studio-runtime-setup-cluster)
+ [在 Workspace 中使用具有运行时系统角色的 EMR 集群](#emr-studio-runtime-use)
+ [注意事项](#emr-studio-runtime-considerations)

## 为运行时系统角色配置用户权限
<a name="emr-studio-runtime-setup-permissions"></a>

配置用户权限，以便 Studio 用户可以针对自己要使用的运行时系统角色调用 `elasticmapreduce:GetClusterSessionCredentials` API。您还必须先配置 [为 Amazon EC2 或 Amazon EKS 配置 EMR Studio 用户权限](emr-studio-user-permissions.md)，用户才能开始使用 Studio。

**警告**  
要授予此权限，请在向呼叫者授予调用权限时根据`elasticmapreduce:ExecutionRoleArn`上下文密钥创建条件`GetClusterSessionCredentials` APIs。以下示例演示了如何执行此操作。

```
{
      "Sid": "AllowSpecificExecRoleArn",
      "Effect": "Allow",
      "Action": [
          "elasticmapreduce:GetClusterSessionCredentials"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": {
              "elasticmapreduce:ExecutionRoleArn": [
                  "arn:aws:iam::111122223333:role/test-emr-demo1",
                  "arn:aws:iam::111122223333:role/test-emr-demo2"
              ]
          }
      }
  }
```

以下示例演示如何允许 IAM 主体使用名为 `test-emr-demo3` 的 IAM 角色作为运行时系统角色。此外，策略持有人只能使用集群 ID `j-123456789` 访问 Amazon EMR 集群。

```
{
    "Sid":"AllowSpecificExecRoleArn",
    "Effect":"Allow",
    "Action":[
        "elasticmapreduce:GetClusterSessionCredentials"
    ],
    "Resource": [
          "arn:aws:elasticmapreduce:<region>:111122223333:cluster/j-123456789"
     ],
    "Condition":{
        "StringEquals":{
            "elasticmapreduce:ExecutionRoleArn":[
                "arn:aws:iam::111122223333:role/test-emr-demo3"
            ]
        }
    }
}
```

以下示例允许 IAM 主体使用名称以字符串 `test-emr-demo4` 开头的任何 IAM 角色作为运行时系统角色。此外，策略持有人只能使用键值对 `tagKey: tagValue` 访问 Amazon EMR 集群。

```
{
    "Sid":"AllowSpecificExecRoleArn",
    "Effect":"Allow",
    "Action":[
        "elasticmapreduce:GetClusterSessionCredentials"
    ],
    "Resource": "*",
    "Condition":{
        "StringEquals":{
             "elasticmapreduce:ResourceTag/tagKey": "tagValue"
        },
        "StringLike":{
            "elasticmapreduce:ExecutionRoleArn":[
                "arn:aws:iam::111122223333:role/test-emr-demo4*"
            ]
        }
    }
}
```

## 使用运行时系统角色启动新集群
<a name="emr-studio-runtime-setup-cluster"></a>

现在有了所需权限，启动一个具有运行时系统角色的新集群，您可以将其与 Amazon EMR Studio Workspace 配合使用。

如果已经启动具有运行时系统角色的新集群，则可跳至 [在 Workspace 中使用具有运行时系统角色的 EMR 集群](#emr-studio-runtime-use) 小节。

1. 首先，完成 [Amazon EMR 步骤的运行时角色](emr-steps-runtime-roles.md#emr-steps-runtime-roles-configure) 小节中的先决条件。

1. 然后，启动具有以下设置的集群，以便在 Amazon EMR Studio Workspaces 中使用运行时系统角色。有关如何启动集群的说明，请参阅 [指定 Amazon EMR 集群的安全配置](emr-specify-security-configuration.md)。
   + 对于发行版标签，选择 emr-6.11.0 或更高版本。
   + 选择 Spark、Livy 和 Jupyter Enterprise Gateway 作为集群应用程序。
   + 使用在上一步中创建的安全配置。
   + 您可以选择为 EMR 集群启用 Lake Formation。有关更多信息，请参阅 [使用 Amazon EMR 启用 Lake Formation](emr-lf-enable.md)。

启动集群后，即可[在 EMR Studio Workspace 中使用启用了运行时系统角色的集群](#emr-studio-runtime-use)。

**注意**  
当该[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_ExecutionEngineConfig.html           #EMR-Type-ExecutionEngineConfig-ExecutionRoleArn)值为时，[ StartNotebookExecution](https://docs.aws.amazon.com/emr/latest/APIReference/API_StartNotebookExecution.html)API 操作目前不支持该`ExecutionEngineConfig.Type`值`EMR`。

## 在 Workspace 中使用具有运行时系统角色的 EMR 集群
<a name="emr-studio-runtime-use"></a>

设置并启动集群后，即可将启用了运行时系统角色的集群与 EMR Studio Workspace 配合使用。

1. 创建新 Workspace 或启动现有 Workspace。有关更多信息，请参阅 [创建 EMR Studio Workspace](emr-studio-create-workspace.md)。

1. 从打开的工作区左侧边栏中选择 **EMR 集群**选项卡，展开**计算类型**部分，然后从 **EMR on EC2 集群**菜单中选择自己的集群，从**运行时系统角色**菜单中选择运行时系统角色。  
![\[EMR Studio Workspace 用户界面基于 JupyterLab界面，左侧边栏上有图标表示的选项卡。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/emr-studio-jupyter-runtime.png)

1. 选择**附加**将具有运行时系统角色的集群附加到 Workspace。

**注意**  
选择运行时角色时，请注意，它可能具有关联的底层托管策略。在大多数情况下，我们建议选择有限的资源，例如特定笔记本。例如，如果您选择的运行时角色包括对所有笔记本的访问权限，则与该角色关联的托管策略将提供完全访问权限。

## 注意事项
<a name="emr-studio-runtime-considerations"></a>

在 Amazon EMR Studio Workspace 中使用支持运行时系统角色的集群时，请记住以下注意事项：
+ 只有将 EMR Studio Workspace 附加到使用 Amazon EMR 6.11 或更高版本的 EMR 集群时，您才能选择运行时系统角色。
+ 此页描述的运行时系统角色功能仅支持在 Amazon EC2 上运行的 Amazon EMR，不支持 EMR Serverless 交互式应用程序。要详细了解 EMR Serverless 的运行时系统角色，请参阅《Amazon EMR Serverless 用户指南》中的 [Job runtime roles](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)**。
+ 虽然在向集群提交任务时需要先配置其他权限，才能指定运行时系统角色，但无需其他权限即可访问 EMR Studio Workspace 生成的文件。此类文件的权限与没有运行时系统角色的集群生成的文件相同。
+ 您不能在具有运行时系统角色的集群的 EMR Studio Workspace 中使用 SQL Explorer。当 Workspace 连接到启用了运行时系统角色的 EMR 集群时，Amazon EMR 会在用户界面中禁用 SQL Explorer。
+ 您不能在 EMR Studio Workspace 中将协作模式与具有运行时系统角色的集群配合使用。当 Workspace 连接到启用了运行时系统角色的 EMR 集群时，Amazon EMR 会禁用 Workspace 协作功能。只有连接了 Workspace 的用户才能访问 Workspace。
+ 您不能在启用了 IAM Identity Center 可信身份传播的 Studio 中使用运行时系统角色。
+ 您可能会遇到 Spark UI 发出的 **Page may not be safe\$1** 警告，来自 Spark UI，用于使用 Amazon EMR 7.4.0 及更低版本且已启用运行时角色的集群。如果发生这种情况，请绕过警报继续查看 Spark UI。

# 以编程方式运行 Amazon EMR Studio Workspace Notebooks
<a name="emr-studio-run-programmatically"></a>

**注意**  
Amazon EMR Serverless 交互式应用程序不支持以编程方式执行 Notebooks 实例。

您可以使用脚本或在 AWS CLI上以编程方式运行 Amazon EMR Studio Workspace Notebooks。要了解如何以编程方式运行 Notebook，请参阅 [EMR Notebooks 的示例编程命令](emr-managed-notebooks-headless.md)。

# 使用 SQL Explorer for EMR Studio 浏览数据
<a name="emr-studio-sql-explorer"></a>

**注意**  
Amazon EMR Serverless 交互式应用程序或启用了 IAM Identity Center 可信身份传播的 Studio 不支持适用于 EMR Studio 的 SQL Explorer。

本主题提供的信息有助于您开始在 Amazon EMR Studio 中使用 SQL Explorer。SQL Explorer 是 Workspace 中的一个单页工具，可帮助您了解 EMR 集群数据目录中的数据来源。您可以使用 SQL Explorer 浏览数据、运行 SQL 查询以检索数据以及下载查询结果。

SQL Explorer 支持 Presto。要使用 SQL Explorer，您必须确保您的集群使用的是 Amazon EMR 版本 5.34.0 或更高版本或者版本 6.4.0 或更高版本，并且安装了 Presto。Amazon EMR Studio SQL Explorer 不支持配置了传输中加密的 Presto 集群。这是因为 Presto 在这些集群上将以 TLS 模式运行。

## 浏览集群的数据目录
<a name="emr-studio-sql-explorer-browse"></a>

SQL Explorer 提供了一个目录浏览器界面，您可以使用该界面来探索和了解数据的组织方式。例如，在编写 SQL 查询之前，您可以使用数据目录浏览器验证表和列名称。

**浏览数据目录**

1. 在 Workspace 中打开 SQL Explorer。

1. 确保您的 Workspace 已挂载到某个在 EC2 上运行、使用 Amazon EMR 6.4.0 或更高版本并且安装了 Presto 的 EMR 集群。您可以选择一个现有的集群或创建一个新的集群。有关更多信息，请参阅 [将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)。

1. 请从下拉列表中选择一个要浏览的 **Database**（数据库）。

1. 展开数据库中的表以查看表的列名称。您还可在搜索栏中输入一个关键词以筛选表结果。

## 运行 SQL 查询以检索数据
<a name="emr-studio-sql-explorer-run-query"></a>

**使用 SQL 查询检索数据并下载结果**

1. 在 Workspace 中打开 SQL Explorer。

1. 确保您的 Workspace 已挂载到某个在 EC2 上运行并且安装了 Presto 和 Spark 的 EMR 集群。您可以选择一个现有的集群或创建一个新的集群。有关更多信息，请参阅 [将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)。

1. 选择 **Open editor**（打开编辑器）以在您的 Workspace 中打开一个新的编辑器选项卡。

1. 在编辑器选项卡中编写 SQL 查询。

1. 选择**运行**。

1. 在 **Result preview**（结果预览）下查看查询结果。预设情况下，SQL Explorer 会显示前 100 个结果。您可以使用 **Preview first 100 query results**（预览前 100 个查询结果）下拉列表以选择要求显示的不同数量的结果（最高 1000）。

1. 选择 **Download results**（下载结果）以 CSV 格式下载结果。您最多可以下载 1000 行结果。

# 将计算资源附加到 EMR Studio Workspace
<a name="emr-studio-create-use-clusters"></a>

Amazon EMR Studio 使用 EMR 集群上的内核运行 Notebook 命令。您应将 Workspace 附加到某个使用 Amazon EC2 实例的集群，或某个 Amazon EMR on EKS 集群，或某个 EMR Serverless 应用程序，然后再选择内核。EMR Studio 允许您将 Workspaces 附加到新的或现有的集群，并让您无需关闭 Workspace 即可灵活地更改集群。

**Topics**
+ [附加 Amazon EC2 集群](#emr-studio-attach-cluster)
+ [附加 Amazon EMR on EKS 集群](#emr-studio-use-eks-cluster)
+ [附加 EMR Serverless 应用程序](#emr-studio-use-serverless-studio)
+ [创建集群](#emr-studio-create-cluster)
+ [分离计算资源](#emr-studio-detach-cluster)

## 将 Amazon EC2 集群附加到 EMR Studio Workspace
<a name="emr-studio-attach-cluster"></a>

您可以在创建 Workspace 时将在 Amazon EC2 上运行的现有 EMR 集群附加到 Workspace，也可以将集群附加到现有 Workspace。如果您要创建和附加*新*集群，请参阅[创建新的 EMR 集群并将其附加到 EMR Studio Workspace](#emr-studio-create-cluster)。

**注意**  
Studio 中启用了 IAM Identity Center 可信身份传播的 Workspace 只能附加到在安全配置中启用了 Identity Center 的 EMR 集群。

------
#### [ On create ]

**在创建 Workspace 时附加 Amazon EMR 计算集群**

1. 在 **Create a Workspace (创建 Workspace)** 对话框中，确保您已经为新 Workspace 选择了子网。展开 **Advanced configuration (高级配置)** 部分。

1. 选择 **Attach Workspace to an EMR cluster (将 Workspace 附加到 EMR 集群)**。

1. 在 **EMR 集群**下拉列表中，选择现有 EMR 集群以将其附加到 Workspace。

附加集群后，您可以完成 Workspace 创建过程。首次打开新 Workspace 并选择 **EMR 集群**面板时，您应该会看到自己选择的集群已附加。

------
#### [ On launch ]

**在启动 Workspace 时附加 Amazon EMR 计算集群**

1. 导航到 Workspace 列表，然后选择要启动的 Workspace 所在行。然后，选择**启动 Workspace** > **使用选项启动**。

1. 选择要附加到 Workspace 的 EMR 集群。

附加集群后，您可以完成 Workspace 创建过程。首次打开新 Workspace 并选择 **EMR 集群**面板时，您应该会看到自己选择的集群已附加。

------
#### [ In JupyterLab ]

**将工作空间连接到中的 Amazon EMR 计算集群 JupyterLab**

1. 选择自己的 Workspace，然后选择**启动 Workspace** > **快速启动**。

1. 在里面 JupyterLab，打开左侧边栏中的 “**集群**” 选项卡。

1. 选择 **EMR on EC2 集群**下拉列表，或者选择 Amazon EMR on EKS 集群。

1. 选择**附加**将集群附加到 Workspace。

附加集群后，您可以完成 Workspace 创建过程。首次打开新 Workspace 并选择 **EMR 集群**面板时，您应该会看到自己选择的集群已附加。

------
#### [ In the Workspace UI ]

**从 Workspace 用户界面将 Workspace 附加 Amazon EMR 计算集群**

1. 在要附加到集群的 Workspace 中，从左侧边栏中选择 **EMR 集群**图标打开**集群**面板。

1. 在**集群类型**下，展开下拉列表并选择 **EMR on EC2 集群**。

1. 从下拉列表中选择一个集群。您可能需要先分离现有集群才能启用集群选择下拉列表。

1. 选择 **Attach (附加)**。附加集群后，您应该会看到一条成功消息。

------

## 将 Amazon EMR on EKS 集群附加到 EMR Studio Workspace
<a name="emr-studio-use-eks-cluster"></a>

除了使用在 Amazon EC2 上运行的 Amazon EMR 集群之外，您还可以将 Workspace 附加到 Amazon EMR on EKS 集群以运行 Notebook 代码。有关 Amazon EMR on EKS 的更多信息，请参阅 [What is Amazon EMR on EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks.html)。

在您将 Workspace 连接到 Amazon EMR on EKS 集群之前，您的 Studio 管理员必须授予您访问权限。

**注意**  
在使用 IAM Identity Center 可信身份传播的 EMR Studio 中，您无法启动 EKS 上的 Amazon EMR 集群。

------
#### [ On create ]

**在创建 Workspace 时附加 Amazon EMR on EKS 集群**

1. 在 **Create a Workspace**（创建 Workspace）对话框中，展开 **Advanced configuration**（高级配置）部分。

1. 选择**将 Workspace 附加到 Amazon EMR on EKS 集群**。

1. 在 **Amazon EMR on EKS 集群**下，从下拉列表中选择集群。

1. 在 **Select an endpoint (选择终端节点)** 下，选择要附加到 Workspace 的托管式终端节点。托管式终端节点是允许 EMR Studio 与您选择的集群进行通信的网关。

1. 选择**创建 Workspace** 完成 Workspace 创建过程并附加选定的集群。

附加集群后，您可以完成 Workspace 创建过程。首次打开新 Workspace 并选择 **EMR 集群**面板时，您应该会看到自己选择的集群已附加。

------
#### [ In the Workspace UI ]

**从 Workspace 用户界面附加 Amazon EMR on EKS 集群**

1. 在要附加到集群的 Workspace 中，从左侧边栏中选择 **EMR 集群**图标打开**集群**面板。

1. 展开**集群类型**下拉列表并选择 **Amazon EMR on EKS 集群**。

1. 在 **EMR on EKS 集群**下，从下拉列表中选择集群。

1. 在 **Endpoint (终端节点)** 下，选择要附加到 Workspace 的托管式终端节点。托管式终端节点是允许 EMR Studio 与您选择的集群进行通信的网关。

1. 选择 **Attach (附加)**。附加集群后，您应该会看到一条成功消息。

------

## 将 Amazon EMR Serverless 应用程序附加到 EMR Studio Workspace
<a name="emr-studio-use-serverless-studio"></a>

您可以将 Workspace 附加到 EMR Serverless 应用程序来运行交互式工作负载。有关更多信息，请参阅通过 [Using notebooks to run interactive workloads with EMR Serverless through EMR Studio](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads.html)。

**注意**  
您无法将 EMR Servererless 应用程序附加到使用 IAM Identity Center 可信身份传播的 EMR Studio 中。

**Example 将工作区附加到 EMR 无服务器应用程序 JupyterLab**  
您的账户管理员必须首先按 [Required permissions for interactive workloads](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads.html#interactive-permissions) 中所述向您授予访问权限，然后才能将 Workspace 附加到 EMR Serverless 应用程序。  

1. 导航至 EMR Studio，选择您的 Workspace，然后选择**启动 Workspace** > **快速启动**。

1. 在里面 JupyterLab，打开左侧边栏中的 “**集群**” 选项卡。

1. 选择将 **EMR Serverless** 作为计算选项，然后选择一个 EMR Serverless 应用程序和一个运行时系统角色。

1. 要将集群附加到您的 Workspace，请选择**附加**。
现在打开此 Workspace 时，您应该会看到已经附加了所选的应用程序。

## 创建新的 EMR 集群并将其附加到 EMR Studio Workspace
<a name="emr-studio-create-cluster"></a>

高级 EMR Studio 用户可以预置在 Amazon EC2 上运行的新 EMR 集群，以便与 Workspace 一起使用。预设情况下，新集群将安装 EMR Studio 所需的所有大数据应用程序。

要创建集群，您的 Studio 管理员必须首先使用会话策略授予您权限。有关更多信息，请参阅 [为 EMR Studio 用户创建权限策略](emr-studio-user-permissions.md#emr-studio-permissions-policies)。

您可以在 **Create a Workspace (创建 Workspace)** 对话框中或从 Workspace UI 的 **Cluster (集群)** 面板中创建新集群。无论哪种方式，您都有两个集群创建选项：

1. **Create an EMR cluster (创建 EMR 集群)**：通过选择 Amazon EC2 实例类型和数量来创建 EMR 集群。

1. **Use a cluster template (使用集群模板)**：通过选择预定义的集群模板预置集群。当您拥有使用集群模板的权限时，才会显示此选项。
**注意**  
如果您为 Studio 启用了 IAM Identity Center 可信身份传播，则必须使用模板来创建集群。

**通过提供集群配置创建 EMR 集群**

1. 选择一个起点。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-studio-create-use-clusters.html)

1. 输入 **Cluster name (集群名称)**。命名集群有助于您稍后在 EMR Studio 集群列表中找到它。

1. 对于 **Amazon EMR 版本**，请为集群选择一个 Amazon EMR 发行版本。

1. 对于 **Instance (实例)**，为集群选择 Amazon EC2 实例的类型和数量。有关选择实例类型的更多信息，请参阅[配置 Amazon EC2 实例类型以用于 Amazon EMR](emr-plan-ec2-instances.md)。一个实例将用作主节点。

1. 选择 EMR Studio 可以在其中启动新集群的**子网**。每个子网选项都经过您的 Studio 管理员的预先批准，您的 Workspace 应该能够连接到列出的任何子网中的集群。

1. 选择**用于日志存储的 S3 URI**。

1. 选择 **Create EMR cluster (创建 EMR 集群)** 来预置集群。如果您使用**创建 Workspace** 对话框，请选择**创建 Workspace** 来创建 Workspace 并预置集群。EMR Studio 预置新集群后，它会将集群附加到 Workspace。

**使用集群模板创建集群**

1. 选择一个起点。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-studio-create-use-clusters.html)

1. 从下拉列表中选择集群模板。每个可用的集群模板都包含一个简要说明，以帮助您进行选择。

1. 您选择的集群模板可能有其它参数，例如 Amazon EMR 发行版或集群名称。您可以选择或插入值，或使用管理员选择的默认值。

1. 选择 EMR Studio 可以在其中启动新集群的**子网**。每个子网选项都经过您的 Studio 管理员的预先批准，您的 Workspace 应该能够连接到任何子网中的集群。

1. 选择 **Use cluster template (使用集群模板)** 来预置集群并将其附加到 Workspace。EMR Studio 将需要几分钟时间来创建集群。如果您使用**创建 Workspace** 对话框，请选择**创建 Workspace** 来创建 Workspace 并预置集群。EMR Studio 预置您的新集群后，它会将集群附加到 Workspace。

## 从 EMR Studio Workspace 分离计算资源
<a name="emr-studio-detach-cluster"></a>

要交换附加到 Workspace 的集群，您可以从 Workspace UI 分离集群。

**从 Workspace 分离集群**

1. 在要分离集群的 Workspace 中，从左侧边栏中选择 **EMR 集群**图标打开**集群**面板。

1. 在 **Select cluster (选择集群)** 下，选择 **Detach (分离)** 并等待 EMR Studio 分离集群。集群分离后，您将看到一条成功消息。

**从 EMR Studio Workspace 分离 EMR Serverless 应用程序**

要交换附加到 Workspace 的计算资源，您可以通过 Workspace UI 分离应用程序。

1. 在要从集群分离的 Workspace 中，从左侧边栏中选择 **Amazon EMR 计算**图标，从而打开**计算**面板。

1. 在**选择计算资源**下，选择**分离**，然后等待 EMR Studio 完成应用程序的分离。应用程序分离完成后，您将看到一条成功消息。

# 将基于 Git 的存储库链接到 EMR Studio Workspace
<a name="emr-studio-git-repo"></a>

最多可将三个基于 Git 的存储库与 Amazon EMR Studio Workspace 关联起来，以保存和共享 Notebook 文件。

## 关于 EMR Studio 的 Git 存储库
<a name="emr-studio-git-repo-about"></a>

您最多可以将三个 Git 存储库与一个 EMR Studio Workspace 相关联。默认情况下，每个工作区都允许您从与 Studio 同一个 AWS 帐户关联的 Git 存储库列表中进行选择。您还可以创建新的 Git 存储库作为 Workspace 资源。

在连接到集群的主节点时，您可以使用终端命令运行如下所示的 Git 命令。

```
!git pull origin <branch-name>
```

此外，您也可以使用 jupyterlab-git 扩展程序。从左侧边栏中选择 **Git** 图标打开它。[有关 jupyterlab-git 扩展的信息，请参阅 jupyterlab-git。 JupyterLab](https://github.com/jupyterlab/jupyterlab-git)

## 先决条件
<a name="emr-studio-git-prereqs"></a>
+ 要将 Git 存储库与 Workspace 关联，Studio 必须配置为允许 Git 存储库链接。您的 Studio 管理员应该执行[为基于 Git 的存储库建立访问和权限](emr-studio-enable-git.md)中所述的步骤。
+ 如果您使用 CodeCommit 存储库，则必须使用 Git 凭据和 HTTPS。不支持 SSH 密钥和带有 AWS Command Line Interface 凭证助手的 HTTPS。 CodeCommit 也不支持个人访问令牌 (PATs)。有关更多信息，请参阅 [IAM 用户指南 CodeCommit中的 “将 IAM 与一起使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html)*” 和 “用户指南*[” 中的 “使用 Git 凭证的 HTTPS *AWS CodeCommit 用户*设置](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html)”。

## 说明
<a name="emr-studio-link-git-repo"></a>

**将关联的 Git 存储库链接到 Workspace**

1. 从 Studio 的 **Workspaces** 列表中打开要链接到存储库的 Workspace。

1. 从左侧边栏中选择 **Amazon EMR Git 存储库**图标打开 **Git 存储库**工具面板。

1. 在 **Git repositories (Git 存储库)** 下，展开下拉列表并最多选择三种存储库以链接到 Workspace。EMR Studio 注册您的选择并开始链接每个存储库。

链接过程可能需要一些时间才能完成。您可以在 **Git repository (Git 存储库)** 工具面板中查看您选择的每个存储库的状态。EMR Studio 将存储库链接到 Workspace 后，您应该会在 **File browser (文件浏览器)** 面板中看到属于该存储库的文件。

**将新的 Git 存储库作为资源添加到 Workspace**

1. 从 Studio 的 Workspaces 列表中打开要链接到存储库的 Workspace。

1. 从左侧边栏中选择 **Amazon EMR Git 存储库**图标打开 **Git 存储库**工具面板。

1. 选择 **Add new Git repository (添加新的 Git 存储库)**。

1. 对于 **Repository name (存储库名称)**，输入 EMR Studio 中存储库的描述性名称。名称只能包含字母数字字符、连字符和下划线。

1. 对于 **Git repository URL (Git 存储库 URL)**，输入存储库的 URL。使用 CodeCommit 存储库时，这是在您选择 “克隆 URL” 然后选择 “**克**隆 HTTPS**” 时复制的 URL**。例如 `https://git-codecommit.us-west-2.amazonaws.com/v1/repos/[MyCodeCommitRepoName]`。

1. 对于 **Branch (分支)**，输入要签出的现有分支的名称。

1. 对于 Git credentials (Git 凭证)，请根据以下准则选择选项。EMR Studio 使用存储在 Secrets Manager 中的密钥访问您的 Git 凭证。
**注意**  
如果您使用 GitHub 存储库，我们建议您使用个人访问令牌 (PAT) 进行身份验证。从 2021 年 8 月 13 日起， GitHub 将要求基于令牌的身份验证，并且在对 Git 操作进行身份验证时将不再接受密码。有关更多信息，请参阅博客上的 [Git 操作令牌身份验证要求 GitHub ](https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/)*文章*。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-studio-git-repo.html)

1. 选择 **Add repository (添加存储库)** 创建新存储库。EMR Studio 创建新存储库后，您将看到一条成功消息。新存储库显示在 **Git repositories (Git 存储库)** 下的下拉列表中。

1. 要将新存储库链接到您的 Workspace，请从 **Git repositories (Git 存储库)** 下的下拉列表中选择它。

链接过程可能需要一些时间才能完成。在 EMR Studio 将新存储库链接到 Workspace 后，您应该会在 **File Browser (文件浏览器)** 面板中看到一个与您的存储库同名的新文件夹。

要打开不同的链接存储库，请在 **File browser (文件浏览器)** 中导航到其文件夹。

# 在 EMR Studio 中使用 Amazon Athena SQL 编辑器
<a name="emr-studio-athena"></a>

## 概述
<a name="emr-studio-athena-overview"></a>

您可以使用 Amazon EMR Studio 在 Amazon Athena 上开发和运行交互式查询。这意味着，您可以使用与运行 Spark、Scala 和其他工作负载相同的 EMR Studio 接口对 Athena 执行 SQL 分析。通过此集成，您可以使用自动完成功能来快速开发查询、浏览 AWS Glue 数据目录中的数据、创建保存的查询、查看查询历史记录等。

有关使用 Amazon Athena 的更多信息，请参阅《Amazon Athena 用户指南》**中的[使用 Athena SQL](https://docs.aws.amazon.com/athena/latest/ug/using-athena-sql.html)。

## 在 EMR Studio 中使用 Athena SQL 编辑器
<a name="emr-studio-athena-use"></a>

按照以下步骤通过您的 EMR Studio 在 Amazon Athena 上开发并运行交互式查询：

1. 为访问此 Studio 中的 Workspaces 的用户的用户角色添加所需的权限。这些权限列在 [AWS Identity and Access Management EMR Studio 用户的权限](emr-studio-user-permissions.md#emr-studio-iam-permissions-table) 表的**从 EMR Studio 中访问 Amazon Athena SQL 编辑器**列中。或者，您可以选择从 [示例用户策略](emr-studio-user-permissions.md#emr-studio-example-policies) 中复制**高级**策略内容，以授予用户使用 EMR Studio 功能（包括此功能）的完全权限。

1. [设置](emr-studio-set-up.md)并[创建 EMR Studio](emr-studio-create-studio.md)。

1. 导航到您的 Studio，然后从边栏中选择**查询编辑器**。

现在，您应看到熟悉的 Athena 编辑器 UI。有关入门和使用 Athena SQL 运行交互式查询的信息，请参阅《Amazon Athena 用户指南》**中的[入门](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)和[使用 Athena SQL](https://docs.aws.amazon.com/athena/latest/ug/using-athena-sql.html)。

**注意**  
如果您已通过 IAM Identity Center 为 EMR Studio 启用可信身份传播，则必须使用 Athena 工作组来控制查询访问权限，并且您使用的工作组还必须使用可信身份传播。有关为工作组设置 Identity Center 和启用可信身份传播的步骤，请参阅《Amazon Athena 用户指南》**中的[使用启用了 IAM Identity Center 的 Athena 工作组](https://docs.aws.amazon.com/athena/latest/ug/workgroups-identity-center.html)。

## 在 EMR Studio 中使用 Athena SQL 编辑器的注意事项
<a name="emr-studio-athena-considerations"></a>
+ 在所有可以使用 EMR Studio 和 Athena 的商业区域中，都提供与 Athena 的集成。
+ EMR Studio 不提供以下 Athena 功能：
  + 管理功能，例如创建或更新 Athena 工作组、数据来源或容量预留
  + Athena for Spark 或 Spark Notebooks
  + 亚马逊 DataZone 集成
  + 成本型优化器（CBO）
  + Step functions

# Amazon 与 EMR Studio 工作区 CodeWhisperer 集成
<a name="emr-studio-codewhisperer"></a>

## 概述
<a name="emr-studio-codewhisperer-overview"></a>

您可以将[亚马逊 CodeWhisperer与 Amaz](https://docs.aws.amazon.com/codewhisperer/latest/userguide/what-is-cwspr.html) on EMR Studio 配合使用，在编写代码时获得实时推荐。 JupyterLab CodeWhisperer可以完成您的注释、完成单行代码、提出 line-by-line建议并生成完整格式的函数。

**注意**  
当您使用 Amazon EMR Studio 时， AWS 可能会存储有关您的使用情况和内容的数据，以改进服务。有关选择退出数据共享的更多信息和说明，请参阅《*Amazon CodeWhisperer 用户指南*》 AWS中的[与之共享您的数据](https://docs.aws.amazon.com/codewhisperer/latest/userguide/sharing-data.html)。

## CodeWhisperer 与工作区一起使用的注意事项
<a name="emr-studio-codewhisperer-considerations"></a>
+ CodeWhisperer 如EMR Studio注意事项中所述，集成也可以在可用 [EM](emr-studio-considerations.md) R Studio AWS 区域 的地方使用。
+ 无论您的工作室位于哪个区域，Amazon EMR Studio 都会自动使用美国东部（弗吉尼亚北部）（us-east-1）的 CodeWhisperer 终端节点进行推荐。
+ CodeWhisperer 仅支持 Python 语言在 EMR Studio 中为 Spark 作业编码 ETL 脚本。
+ 客户端遥测选项可量化您的使用情况。 CodeWhispererEMR Studio 不支持此功能。

## 所需的权限 CodeWhisperer
<a name="emr-studio-codewhisperer-permissions"></a>

要使用 CodeWhisperer，您必须将以下策略附加到您的 Amazon EMR Studio 的 IAM 用户角色：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CodeWhispererPermissions",
      "Effect": "Allow",
      "Action": [
        "codewhisperer:GenerateRecommendations"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## CodeWhisperer 与工作区一起使用
<a name="emr-studio-codewhisperer-use"></a>

要显示 CodeWhisperer 参考日志 JupyterLab，请打开 JupyterLab 窗口底部的**CodeWhisperer**面板并选择 “**打开代码参考日志**”。

以下列表包含可用于与 CodeWhisperer建议进行交互的快捷方式：
+ **暂停推荐**-使用 CodeWhisperer 设置中的 “**暂停自动建议**”。
+ **接受建议**：按键盘上的 **Tab** 键。
+ **拒绝建议**：按键盘上的 **Escape** 键。
+ **浏览建议**：使用键盘上的 **Up** 和 **Down** 箭头。
+ **手动调用**：按键盘上的 **Alt** 和 **C**。如果您使用的是 Mac，请按 **Cmd** 和 **C**。

您还可以使用 CodeWhisperer 更改诸如日志级别之类的设置，并获取有关代码参考的建议。有关更多信息，请参阅 *Amazon CodeWhisperer 用户指南*中的[设置 CodeWhisperer JupyterLab](https://docs.aws.amazon.com/codewhisperer/latest/userguide/jupyterlab-setup.html)和[功能](https://docs.aws.amazon.com/codewhisperer/latest/userguide/features.html)。

# 使用 EMR Studio 调试应用程序和任务
<a name="emr-studio-debug"></a>

借助 Amazon EMR Studio，您可以启动数据应用程序界面，以便在浏览器中分析应用程序和任务运行情况。

您还可以从 Amazon EMR 控制台为在 EC2 集群上运行的 Amazon EMR 启动持久性的集群外用户界面。有关更多信息，请参阅 [在 Amazon EMR 中查看持久性应用程序用户界面](app-history-spark-UI.md)。

**注意**  
根据您的浏览器设置，您可能需要启用弹出窗口才能打开应用程序 UI。

有关配置和使用应用程序界面的信息，请参阅 [YARN 时间线服务器](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/TimelineServer.html)、[监控和检测](https://spark.apache.org/docs/latest/monitoring.html)或 [Tez UI 概览](https://tez.apache.org/tez-ui.html)。

## 调试 Amazon EC2 任务上运行的 Amazon EMR
<a name="emr-studio-debug-ec2"></a>

------
#### [ Workspace UI ]

**从 Notebook 文件启动集群上 UI**

当您使用 Amazon EMR 发行版本 5.33.0 及更高版本时，您可以从 Workspace 中的 Notebook 启动 Spark Web 用户界面（Spark UI 或 Spark 历史记录服务器）。

在集群上 UIs 使用 PySpark、Spark 或 SparkR 内核。Spark 事件日志或容器日志的最大可查看文件大小为 10MB。如果您的日志文件超过 10MB，我们建议您使用持久性 Spark 历史记录服务器而不是集群上 Spark UI 来调试任务。
**重要**  
为了让 EMR Studio 从 Workspace 启动集群上应用程序用户界面，集群必须能够与 Amazon API Gateway 进行通信。您必须配置 EMR 集群以允许网络流量传出到 Amazon API Gateway，并确保可从集群访问 Amazon API Gateway。  
Spark UI 通过解析主机名来访问容器日志。如果您使用自定义域名，您必须确保您的集群节点的主机名可以由 Amazon DNS 或您指定的 DNS 服务器进行解析。为此，请为与您的集群关联的 Amazon Virtual Private Cloud（VPC）设置动态主机配置协议（DHCP）选项。有关 DHCP 选项的更多信息，请参阅《Amazon Virtual Private Cloud 用户指南》****中的 [DHCP 选项集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。

1. 在您的 EMR Studio 中，打开您要使用的 Workspace，并确保它附加到在 EC2 上运行的 Amazon EMR 集群。有关说明，请参阅[将计算资源附加到 EMR Studio Workspace](emr-studio-create-use-clusters.md)。

1. 打开笔记本文件并使用 PySpark、Spark 或 SparkR 内核。要选择内核，请从 Notebook 工具栏的右上角选择内核名称以打开 **Select Kernel (选择内核)** 对话框。如果没有选择任何内核，名称显示为 **No Kernel\$1 (无内核！)**。

1. 运行 Notebook 代码。启动 Spark 上下文时，以下内容将作为输出显示在 Notebook 中。它可能需要几秒钟时间才能显示。如果您已启动 Spark 上下文，则可以随时运行 `%%info` 命令以访问指向 Spark UI 的链接。
**注意**  
如果 Spark UI 链接不起作用或几秒钟后未显示，请创建一个新的 Notebook 单元并运行 `%%info` 命令以重新生成链接。  
![\[Spark 应用程序主信息的屏幕截图，包括指向 Spark UI 的链接。运行 Spark 应用程序时，该链接会显示在 Notebook 中。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/spark-app-ui-link.jpg)

1. 要启动 Spark UI，请选择 **Spark UI** 下的 **Link (链接)**。如果您的 Spark 应用程序正在运行，Spark UI 将在新选项卡中打开。如果应用程序已完成，则会打开 Spark 历史记录服务器。

   启动 Spark 用户界面后，可以在浏览器中修改网址以打开 YARN ResourceManager 或 Yarn Timeline 服务器。将下列路径之一添加到 `amazonaws.com` 之后。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-studio-debug.html)

------
#### [ Studio UI ]

**从 EMR Studio UI 中启动持久性 YARN 时间线服务器、Spark 历史记录服务器或 Tez UI**

1. 在您的 EMR Studio 中，从页面的左侧选择 **Amazon EMR on EC2** 打开 **Amazon EMR on EC2** 集群列表。

1. 通过在搜索框中输入值，按 **name (名称)**、**state (状态)** 或 **ID** 筛选集群列表。您还可以按创建**时间范围**进行搜索。

1. 选择一个集群，然后选择 **Launch 应用程序 UIs**以选择应用程序用户界面。应用程序 UI 将在新的浏览器选项卡中打开，加载可能需要一些时间。

------

## 调试在 EMR Serverless 上运行的 EMR Studio
<a name="emr-studio-debug-serverless"></a>

与在 Amazon EC2 上运行的 Amazon EMR 类似，您可以使用 Workspace 用户界面来分析您的 EMR Serverless 应用程序。在 Workspace UI 中，当您使用 Amazon EMR 发行版 6.14.0 及更高版本时，您可以从 Workspace 中的 Notebook 实例启动 Spark Web 用户界面（Spark UI 或 Spark 历史记录服务器）。为方便起见，我们还提供了指向驱动程序日志的链接，便于您快速访问 Spark 驱动程序日志。

## 使用 Spark 历史记录服务器调试 Amazon EMR on EKS 任务运行
<a name="emr-studio-debug-eks"></a>

当您向 Amazon EMR on EKS 集群提交任务运行时，可以使用 Spark 历史记录服务器访问该任务运行的日志。Spark 历史记录服务器提供了监控 Spark 应用程序的工具，例如：调度流程阶段和任务列表、RDD 大小和内存使用情况概述以及环境信息。您可以通过以下方式启动 Amazon EMR on EKS 任务运行的 Spark 历史记录服务器：
+ 当您使用具有 EMR on EKS 托管式端点的 Amazon EMR Studio 提交任务运行时，可以通过 Workspace 的 Notebook 文件启动 Spark 历史记录服务器。
+ 当你在 EKS 上使用适用于 Amazon EMR 的 AWS CLI 或 AWS 软件开发工具包提交任务运行时，你可以从 EMR Studio 用户界面启动 Spark 历史服务器。

有关如何使用 Spark 历史记录服务器的信息，请参阅 Apache Spark 文档的[监控和仪表](https://spark.apache.org/docs/latest/monitoring.html)。有关任务运行的更多信息，请参阅《Amazon EMR on EKS 开发指南》**中的[概念和组件](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-concepts.html)。

**从 EMR Studio Workspace 中的 Notebook 文件启动 Spark 历史记录服务器**

1. 打开连接到 Amazon EMR on EKS 集群的 Workspace。

1. 在 Workspace 中选择并打开 Notebook 文件。

1. 选择 Notebook 文件顶部的 **Spark UI**，以在新选项卡打开持久性 Spark 历史记录服务器。

**通过 EMR Studio UI 启动 Spark 历史记录服务器**
**注意**  
EMR Studio 用户界面中的**任务**列表仅显示您在 EKS 上使用 AWS 适用于 Amazon EMR 的 AWS CLI 或 SDK 提交的任务运行。

1. 在您的 EMR Studio 中，从页面左侧选择 **Amazon EMR on EKS**。

1. 搜索您常用于提交任务运行的 Amazon EMR on EKS 虚拟集群。您可在搜索框中输入值，按 **status (状态)** 或 **ID** 筛选集群列表。

1. 选择集群以打开其详细信息页面。详细信息页面显示有关集群的信息，例如 ID、命名空间和状态。该页面还显示了提交至该集群的所有运行任务的列表。

1. 在集群详细信息页面中选择要调试的任务运行。

1. 在 **Jobs (任务)** 列表的右上角，选择 **Launch Spark History Server (启动 Spark 历史记录服务器)**，以在新的浏览器选项卡中打开应用程序界面。

# 在 EMR Studio Workspace 中安装内核和库
<a name="emr-studio-install-libraries-and-kernels"></a>

每个 Amazon EMR Studio Workspace 均附带一组预安装的库和内核。

## 在 Amazon EC2 上运行的集群的内核和库
<a name="emr-studio-ec2-kernels-libraries"></a>

当您使用在 Amazon EC2 上运行的 EMR 集群时，您还可以通过以下方式为 EMR Studio 自定义环境：
+ **在集群主节点上安装 Jupyter Notebook 内核和 Python 库**：使用此选项安装库时，库由附加到同一集群的所有 Workspace 共享。您可以从 Notebook 单元格中安装内核或库，也可以在使用 SSH 连接到集群的主节点时安装内核或库。
+ **使用 Notebook 范围内的库** — 当 Workspace 用户从 Notebook 单元中安装和使用库时，这些库仅适用于该 Notebook。此选项允许同一集群的不同 Notebook 工作，而不必担心库版本冲突。

EMR Studio Workspaces 与 EMR Notebooks 具有相同的底层架构。您可以使用 EMR Studio 安装和使用 Jupyter Notebook 内核和 Python 库，就像使用 EMR Notebooks 一样。有关说明，请参阅 [在 EMR Studio 中安装和使用内核和库](emr-managed-notebooks-installing-libraries-and-kernels.md)。

## Amazon EMR on EKS 集群上的内核和库
<a name="emr-studio-eks-kernels-libraries"></a>

EKS 集群上的 Amaz PySpark on EMR 包括和带有一组预安装库的 Python 3.7 内核。Amazon EMR on EKS 不支持安装其他的库或集群。

EKS 集群上的每个 Amazon EMR 都安装了以下 Python 和 PySpark 库：
+ **Python** – boto3, cffi, future, ggplot, jupyter, kubernetes, matplotlib, numpy, pandas, plotly, pycryptodomex, py4j, requests, scikit-learn, scipy, seaborn
+ **PySpark** – ggplot, jupyter, matplotlib, numpy, pandas, plotly, pycryptodomex, py4j, requests, scikit-learn, scipy, seaborn

## EMR Serverless 应用程序的内核和库
<a name="emr-studio-serverless-kernels-libraries"></a>

每个 EMR 无服务器应用程序都安装了以下 Python 和 PySpark 库：
+ **Python** – ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, seaborn
+ **PySpark** – ggplot, matplotlib,numpy, pandas, plotly, bokeh, scikit-learn, scipy, seaborn

# 在 EMR Studio 中使用 magic 命令增强内核
<a name="emr-studio-magics"></a>

## 概述
<a name="overview-magics"></a>

EMR Studio 和 EMR Notebooks 支持命令。magic *Magic*命令或 *magics* 是 IPython 内核提供的增强功能，可帮助您运行和分析数据。 IPython是一个使用 Python 构建的交互式外壳环境。

Amazon EMR 还支持一个程序包Sparkmagic，该程序包为与 Spark 相关的内核（PySpark、SparkR 和 Scala 内核）提供magic特定命令，并在集群上使用 Livy 提交 Spark 任务。

只要您的 EMR Notebooks 中有 Python 内核，就可以使用 magic 命令。同样，任何与 Spark 相关的内核都支持 Sparkmagic 命令。

Magic 命令也称作 *magics*，共有两类：
+ **行 magics`%`：此类 ** 命令用单个 magic 前缀表示，并在单行代码上运行
+ **单元格 magics**：此类 magic 命令用双 `%%` 前缀表示，并在多行代码上运行

有关所有可用的 magics，请参阅 [列出 magic 和 Sparkmagic 命令](#accessing-all-magic-commands)。

## 注意事项和限制
<a name="considerations-limitations-magics"></a>
+ EMR Serverless 不支持使用 `%%sh` 来运行 `spark-submit`，也不支持 EMR Notebooks magics。
+ Amazon EMR on EKS 集群不支持将 Sparkmagic 命令用于 EMR Studio。这是因为拥有托管式端点的 Spark 内核属于 Kubernetes 内置的内核，不支持 Sparkmagic 和 Livy。您可以将 Spark 配置直接设置到 SparkContext 对象中作为解决方法，如以下示例所示。

  ```
  spark.conf.set("spark.driver.maxResultSize", '6g') 
  ```
+ 禁止以下magic命令和操作 AWS：
  + `%alias`
  + `%alias_magic`
  + `%automagic`
  + `%macro`
  + 使用 `%configure` 修改 `proxy_user`
  + 使用 `%env` 或 `%set_env` 修改 `KERNEL_USERNAME`

## 列出 magic 和 Sparkmagic 命令
<a name="accessing-all-magic-commands"></a>

使用以下命令列出可用的 magic 命令：
+ `%lsmagic` 会列出当前可用的所有 magic 函数。
+ `%%help` 会列出 Sparkmagic 软件包提供的当前可用 Spark 相关 magic 函数。

## 使用 `%%configure` 来配置 Spark
<a name="using-configure-sparkmagic"></a>

Sparkmagic 最有用的命令之一是 `%%configure` 命令，该命令可配置会话创建参数。借助 `conf` 设置，您可以配置 [Apache Spark 配置文档](https://spark.apache.org/docs/latest/configuration.html) 中提及的任何 Spark 配置。

**Example 将外部 JAR 文件从 Maven 存储库或 Amazon S3 添加到 EMR Notebooks**  
您可以使用以下方法将外部 JAR 文件依赖项添加到 Sparkmagic 支持的任何 Spark 相关内核中。  

```
%%configure -f
{"conf": {
    "spark.jars.packages": "com.jsuereth:scala-arm_2.11:2.0,ml.combust.bundle:bundle-ml_2.11:0.13.0,com.databricks:dbutils-api_2.11:0.0.3",
    "spark.jars": "s3://amzn-s3-demo-bucket/my-jar.jar"
    }
}
```

**Example : 配置 Hudi**  
您可以使用 Notebook 编辑器来配置 EMR Notebook 以使用 Hudi。  

```
%%configure
{ "conf": {
     "spark.jars": "hdfs://apps/hudi/lib/hudi-spark-bundle.jar,hdfs:///apps/hudi/lib/spark-spark-avro.jar", 
     "spark.serializer": "org.apache.spark.serializer.KryoSerializer",
     "spark.sql.hive.convertMetastoreParquet":"false"
     }
}
```

## 使用 `%%sh` 运行 `spark-submit`
<a name="using-sh-sparkmagic"></a>

在附加的集群实例上，`%%sh` magic 会通过子进程来运行 Shell 命令。通常，您需要使用其中一个 Spark 相关的内核在附加的集群上运行 Spark 应用程序。但如果要使用 Python 内核提交 Spark 应用程序，可以使用以下 magic，并将存储桶名称替换为小写的储桶名称。

```
%%sh
spark-submit --master yarn --deploy-mode cluster s3://amzn-s3-demo-bucket/test.py
```

在此示例中，集群需要访问 `s3://amzn-s3-demo-bucket/test.py` 的位置，否则该命令将失败。

您可以将 `%%sh` magic 与任何 Linux 命令结合使用。如果您要运行任何 Spark 或 YARN 命令，请使用以下选项之一创建 `emr-notebook` Hadoop 用户，并授予用户运行这些命令的权限。
+ 您可以通过运行以下命令显式创建新用户。

  ```
  hadoop fs -mkdir /user/emr-notebook
  hadoop fs -chown emr-notebook /user/emr-notebook
  ```
+ 您可以在 Livy 中启用用户模拟功能，从而自动创建用户。请参阅[启用用户模拟以监控 Spark 用户和任务活动](emr-managed-notebooks-spark-monitor.md)了解更多信息。

## 使用 `%%display` 可视化显示 Spark 数据框
<a name="using-display-sparkmagic"></a>

您可以使用 `%%display` magic 来可视化显示 Spark 数据框。要使用此 magic，请运行以下命令。

```
%%display df
```

选择以表格格式查看结果，如下图所示。

![\[使用 %%display magic 的输出，以表格格式显示结果。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/magic-display-table.png)


您也可以选择使用五种类型的图表来可视化数据。您的选项包括饼图、散点图、折线图、面积图和条形图。

![\[使用 %%display magic 的输出，以图表格式显示结果。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/magic-display-chart.png)


## 使用 EMR Notebooks magics
<a name="emr-magics"></a>

Amazon EMR 提供了以下 EMR Notebooks magics，您可以将这些命令用于 Python3 和基于 Spark 的内核：
+ `%mount_workspace_dir`：将 Workspace 目录挂载到集群，以便您可以从 Workspace 中的其他文件导入和运行代码
**注意**  
使用 `%mount_workspace_dir` 时，只有 Python 3 内核可以访问本地文件系统。Spark 执行器将无法使用此内核访问挂载的目录。
+ `%umount_workspace_dir` - 从集群中卸载 Workspace 目录
+ `%generate_s3_download_url` - 在 Notebook 输出中为 Amazon S3 对象生成临时下载链接 

### 先决条件
<a name="emr-magics-prereqs"></a>

您需要完成以下任务后才能安装 EMR Notebooks magics：
+ 确保您的 [集群 EC2 实例（EC2 实例配置文件）的服务角色](emr-iam-role-for-ec2.md) 拥有 Amazon S3 的读取访问权限。使用 `AmazonElasticMapReduceforEC2Role` 托管策略的 `EMR_EC2_DefaultRole` 满足此要求。如果您使用自定义角色或策略，请确保它拥有必要的 S3 权限。
**注意**  
EMR Notebooks magics 以 Notebook 实例用户身份在集群上运行，并使用 EC2 实例配置文件与 Amazon S3 进行交互。在 EMR 集群上挂载 Workspace 目录时，拥有附加到该集群权限的所有 Workspace 和 EMR Notebooks 都可以访问已挂载的目录。  
预设情况下，目录将以只读方式挂载。虽然 `s3fs-fuse` 和 `goofys` 允许读-写挂载，但我们强烈建议您不要将挂载参数修改为以读-写模式挂载目录。如果您允许写入权限，则对目录所做的任何更改都将写入 S3 存储桶。为避免意外删除或覆盖，您可以为 S3 存储桶启用版本控制。要了解更多信息，请参阅[在 S3 存储桶中使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。
+ 在集群上运行以下脚本中的一种，从而安装 EMR Notebooks magics 的依赖项。要运行脚本，您可以 [使用自定义引导操作](emr-plan-bootstrap.md#bootstrapCustom)，或当您已经有正在运行的集群时，按照[在 Amazon EMR 集群上运行命令和脚本](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-commandrunner.html)中的说明进行操作。

  您可以选择要安装哪个依赖项。[s3fs-fuse](https://github.com/s3fs-fuse/s3fs-fuse) 和 [goofys](https://github.com/kahing/goofys) 都是 FUSE（用户空间中的文件系统）工具，这些工具允许您将 Amazon S3 存储桶作为本地文件系统挂载到集群上。`s3fs` 工具可提供类似于 POSIX 的体验。当您更喜欢性能而不是符合 POSIX 标准的文件系统时，`goofys` 工具是不错的选择。

  Amazon EMR 7.x 系列使用 Amazon Linux 2023，该版本不支持 EPEL 存储库。如果你运行的是亚马逊 EMR 7.x，请按照 [s3fs-fuse GitHub](https://github.com/s3fs-fuse/s3fs-fuse/blob/master/COMPILATION.md) 的说明进行安装。`s3fs-fuse`如果使用 5.x 或 6.x 系列，请使用以下命令安装 `s3fs-fuse`。

  ```
  #!/bin/sh
  
  # Install the s3fs dependency for EMR Notebooks magics 
  sudo amazon-linux-extras install epel -y
  sudo yum install s3fs-fuse -y
  ```

  **或者**

  ```
  #!/bin/sh
  
  # Install the goofys dependency for EMR Notebooks magics 
  sudo wget https://github.com/kahing/goofys/releases/latest/download/goofys -P /usr/bin/
  sudo chmod ugo+x /usr/bin/goofys
  ```

### 安装 EMR Notebooks magics
<a name="emr-magics-install"></a>

**注意**  
在 Amazon EMR 发行版 6.0 到 6.9.0 和 5.0 到 5.36.0 中，只有 `emr-notebooks-magics` 程序包版本 0.2.0 及更高版本支持 `%mount_workspace_dir` magic。

完成以下步骤以安装 EMR Notebooks magics。

1. 在您的 Notebook 中，运行下面的命令以安装 [https://pypi.org/project/emr-notebooks-magics/](https://pypi.org/project/emr-notebooks-magics/) 程序包。

   ```
   %pip install boto3 --upgrade
   %pip install botocore --upgrade
   %pip install emr-notebooks-magics --upgrade
   ```

1. 重启内核以加载 EMR Notebooks magics。

1. 使用下面的命令验证安装，该命令应该显示用于 `%mount_workspace_dir` 的输出帮助文本。

   ```
   %mount_workspace_dir?
   ```

### 使用 `%mount_workspace_dir` 挂载 Workspace 目录
<a name="emr-magics-mount-workspace"></a>

您可以借助 `%mount_workspace_dir` magic 将 Workspace 目录挂载到 EMR 集群上，以便您能导入和运行存储在目录中的其他文件、模块或程序包。

下面的示例将整个 Workspace 目录挂载到集群上，并指定可选的 *`<--fuse-type>`* 参数，以使用 goofys 挂载目录。

```
%mount_workspace_dir . <--fuse-type goofys>
```

要验证您的 Workspace 目录是否已挂载，请使用下面的示例，借助 `ls` 命令来显示当前的工作目录。输出结果应该显示 Workspace 中的所有文件。

```
%%sh
ls
```

在 Workspace 中完成更改后，可以使用下面的命令卸载 Workspace 目录：

**注意**  
即使 Workspace 已停止或已分离，您的 Workspace 目录仍会保持挂载到集群上。您必须显式卸载 Workspace 目录。

```
%umount_workspace_dir
```

### 使用 `%generate_s3_download_url` 下载 Amazon S3 对象
<a name="emr-magics-generate-s3-download-url"></a>

`generate_s3_download_url` 命令可为存储在 Amazon S3 中的对象创建预签名 URL。您可以使用该预签名 URL 将对象下载到本地计算机。例如，您可以运行 `generate_s3_download_url` 下载代码写入 Amazon S3 的 SQL 查询的结果。

预设情况下，预签名 URL 的有效期为 60 分钟。您可以通过指定 `--expires-in` 标志的秒数来更改过期时间。例如，`--expires-in 1800` 创建一个有效期为 30 分钟的 URL。

下面的示例通过指定完整的 Amazon S3 路径来为对象生成下载链接：`s3://EXAMPLE-DOC-BUCKET/path/to/my/object`。

```
%generate_s3_download_url s3://EXAMPLE-DOC-BUCKET/path/to/my/object
```

要了解有关使用 `generate_s3_download_url` 的更多信息，请运行下面的命令以显示帮助文本。

```
%generate_s3_download_url?
```

### 使用 `%execute_notebook` 在无头模式下运行 Notebook
<a name="headless-execution"></a>

您可以使用 `%execute_notebook` magic 在无头模式下运行另一个 Notebook 实例，并查看运行的每个单元格的输出。此 magic 命令需要拥有 Amazon EMR 和 Amazon EC2 共享的实例角色的额外权限。有关如何授予额外权限的更多信息，请运行命令 `%execute_notebook?`。

如果有长时间运行的任务，系统可能会因为不活动而进入睡眠状态，也可能暂时失去互联网连接。这可能会中断浏览器与 Jupyter 服务器之间的连接。如果出现这种情况，您可能会丢失自己运行的单元格和 Jupyter 服务器发送的单元格的输出内容。

如果使用 `%execute_notebook` magic 在无头模式下运行 Notebook 实例，即使本地网络出现中断，EMR Notebooks 也会捕获已运行单元格的输出。EMR Notebooks 将输出以增量方式保存在与您运行的 Notebook 同名的新 Notebook 中。然后，EMR Notebooks 将 Notebook 放入 Workspace 内的新文件夹。无头运行发生在同一个集群上并使用 `EMR_Notebook_DefaultRole` 服务角色，但其他参数可能会更改默认值。

要在无头模式下运行 Notebook，请使用以下命令：

```
%execute_notebook <relative-file-path>
```

要为无头运行指定集群 ID 和服务角色，请使用以下命令：

```
%execute_notebook <notebook_name>.ipynb --cluster-id <emr-cluster-id> --service-role <emr-notebook-service-role>
```

当 Amazon EMR 和 Amazon EC2 共享一个实例角色时，该角色需要以下额外权限：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:StartNotebookExecution",
        "elasticmapreduce:DescribeNotebookExecution",
        "ec2:DescribeInstances"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowELASTICMAPREDUCEStartnotebookexecution"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole"
      ],
      "Sid": "AllowIAMPassrole"
    }
  ]
}
```

------

**注意**  
要使用 `%execute_notebook` magic，请安装 `emr-notebooks-magics` 程序包版本 0.2.3 或更高版本。

# 将多语言 Notebooks 与 Spark 内核配合使用
<a name="emr-multi-language-kernels"></a>

每个 Jupyter Notebook 内核都有默认语言。例如，Spark 内核的默认语言是 Scala，而内 PySpark 核的默认语言是 Python。借助 Amazon EMR 6.4.0 及更高版本，EMR Studio 支持多语言 Notebooks。这意味着除了默认语言 Python、Spark、R 和 Spark SQL 之外，EMR Studio 中的每个内核都可以支持以下语言。

要激活此功能，请在任何单元格的开头指定以下一种 magic 命令。


****  

| 语言 | 命令 | 
| --- | --- | 
| Python | `%%pyspark` | 
| Scala | `%%scalaspark` | 
| R | `%%rspark` 不支持将交互式工作负载与 EMR Serverless 结合使用。 | 
| Spark SQL | `%%sql` | 

调用后，这些命令会使用相应语言的解释器在同一 Spark 会话中执行整个单元格。

该`%%pyspark`单元magic允许用户在所有 Spark 内核中编写 PySpark 代码。

```
%%pyspark
a = 1
```

用户可以使用 `%%sql` 单元格 magic 在所有 Spark 内核中执行 Spark-SQL 代码。

```
%%sql
SHOW TABLES
```

用户可以使用 `%%rspark` 单元格 magic 在所有 Spark 内核中执行 SparkR 代码。

```
%%rspark
a <- 1
```

用户可以使用 `%%scalaspark` 单元格 magic 在所有 Spark 内核中执行 Spark Scala 代码。

```
%%scalaspark
val a = 1
```

## 使用临时表格在多个语言解释器之间共享数据
<a name="emr-temp-tables"></a>

您还可以使用临时表格在语言解释器之间共享数据。以下示例通过单元格的 `%%pyspark` 用 Python 创建临时表格，并通过下列单元格的 `%%scalaspark` 从 Scala 该表中读取数据。

```
%%pyspark
df=spark.sql("SELECT * from nyc_top_trips_report LIMIT 20")
# create a temporary table called nyc_top_trips_report_view in python
df.createOrReplaceTempView("nyc_top_trips_report_view")
```

```
%%scalaspark
// read the temp table in scala
val df=spark.sql("SELECT * from nyc_top_trips_report_view")
df.show(5)
```