

# Amazon 中 Apache Spark 的生成式人工智能故障排除
<a name="troubleshoot-spark"></a>

 Amazon 中 Apache Spark 作业的生成式人工智能故障排除是一项新功能，可帮助数据工程师和科学家轻松诊断和修复其 Spark 应用程序中的问题。该功能利用机器学习和生成式人工智能技术，分析 Spark 作业中的问题，并提供详细的根本原因分析以及解决这些问题的可行建议。Apache Spark 的生成式人工智能故障排除适用于在 Amazon Glue 版本 4.0 及以下版本上运行的作业。


|  | 
| --- |
| 使用我们人工智能驱动的故障排除代理改变 Apache Spark 故障排除，该代理现在支持所有主要的部署模式，包括 Amazon Glue、Amazon EMR-EC2、Amazon EMR-Serverless 和 Amazon SageMaker AI 笔记本。这款强大的代理通过将自然语言交互、实时工作负载分析和智能代码建议整合到无缝体验中，从而消除了复杂的调试过程。有关实施详细信息，请参阅[什么是适用于 Amazon EMR 的 Apache Spark 故障排除代理](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/spark-troubleshoot.html)。查看[使用故障排除代理](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/spark-troubleshooting-using-troubleshooting-agent.html)进行 Amazon Glue 故障排除示例中的第二个演示。 | 

## Apache Spark 的生成式人工智能故障排除如何工作？
<a name="troubleshoot-spark-how-it-works"></a>

 对于失败的 Spark 作业，生成式人工智能故障排除会分析作业元数据以及与作业错误签名相关的精确指标和日志，以生成根本原因分析，并建议具体的解决方案和最佳实践来帮助解决作业失败。

## 为您的作业设置 Apache Spark 的生成式人工智能故障排除
<a name="w2aac37c11c12c33c13"></a>

### 配置 IAM 权限
<a name="troubleshoot-spark-iam-permissions"></a>

 向 Amazon Glue 中的作业授予 Spark 故障排除功能所使用 API 的权限需要相应的 IAM 权限。您可以通过将以下自定义 Amazon 策略附加到您的 IAM 身份（例如用户、角色或组）来获取权限。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*",
        "arn:aws:glue:*:*:job/*"
      ]
    }
  ]
}
```

------

**注意**  
 IAM 策略中使用了以下两个 API，用于通过 Amazon Glue Studio 控制台实现这种体验：`StartCompletion` 和 `GetCompletion`。

### 分配权限
<a name="troubleshoot-spark-assigning-permissions"></a>

 要提供访问权限，请为您的用户、组或角色添加权限：
+  对于 IAM Identity Center 中的用户和组：创建权限集。按照《IAM Identity Center 用户指南》中[创建权限集](https://docs.amazonaws.cn/singlesignon/latest/userguide/howtocreatepermissionset.html)的说明进行操作。
+  对于通过身份提供商在 IAM 中管理的用户：创建身份联合验证角色。按照《IAM 用户指南》中[针对第三方身份提供商创建角色（联合身份验证）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-idp.html)的说明进行操作。
+  对于 IAM 用户：创建您的用户可以代入的角色。按照《IAM 用户指南》中[为 IAM 用户创建角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-user.html)的说明进行操作。

## 从失败的作业运行中运行故障排除分析
<a name="troubleshoot-spark-run-analysis"></a>

 您可以通过 Amazon Glue 控制台中的多条路径访问故障排除功能。以下介绍如何开始使用：

### 选项 1：从作业列表页面
<a name="troubleshoot-spark-from-jobs-list"></a>

1.  打开 Amazon Glue 控制台，网址为 [https://console.aws.amazon.com/glue/](https://console.amazonaws.cn/glue/)。

1.  在导航窗格中，选择 **ETL 作业**。

1.  在作业列表中找到失败的作业。

1.  在作业详细信息部分中选择**运行**选项卡。

1.  单击您要分析的失败的作业运行。

1.  选择**使用人工智能进行故障排除**以开始分析。

1.  故障排除分析完成后，您可以在屏幕底部的**故障排除分析**选项卡中查看根本原因分析和建议。

![GIF 显示失败运行的端到端实现以及运行人工智能功能时的故障排除。](http://docs.amazonaws.cn/glue/latest/dg/images/troubleshoot_spark_option_1_jobs_list.gif)


### 选项 2：使用作业运行监控页面
<a name="troubleshoot-spark-job-run-monitoring-page"></a>

1.  导航到**作业运行监控**页面。

1.  找到失败的作业运行。

1.  选择**操作**下拉菜单。

1.  选择**使用人工智能进行故障排除**。

![GIF 显示失败运行的端到端实现以及运行人工智能功能时的故障排除。](http://docs.amazonaws.cn/glue/latest/dg/images/troubleshoot_spark_option_2_job_monitoring.gif)


### 选项 3：从作业运行详细信息页面
<a name="troubleshoot-spark-job-run-details-page"></a>

1.  通过单击**运行**选项卡中失败的运行**查看详细信息**，或者从**作业运行监控**页面中选择该作业运行，导航到失败的作业运行的详细信息页面。

1.  在作业运行详细信息页面中，找到**故障排除分析**选项卡。

## 支持的故障排除类别
<a name="troubleshoot-spark-supported-troubleshooting-categories"></a>

 此服务侧重于数据工程师和开发者在其 Spark 应用程序中经常遇到的三类主要问题：
+  **资源设置和访问错误：**在 Amazon Glue 中运行 Spark 应用程序时，资源设置和访问错误是最常见但最难诊断的问题之一。当 Spark 应用程序尝试与 Amazon 资源交互，但遇到权限问题、缺少资源或配置问题时，通常会发生这些错误。
+  **Spark 驱动程序和执行程序内存问题：**Apache Spark 作业中与内存相关的错误可能很难诊断和解决。当数据处理要求超出驱动程序节点或执行程序节点上可用的内存资源时，通常会表现为这类错误。
+  **Spark 磁盘容量问题：**Amazon Glue Spark 作业中与存储相关的错误通常会在随机操作、数据溢出或处理大规模数据转换时出现。这些错误可能特别棘手，因为它们可能要等到您的作业运行一段时间后才会表现出来，从而可能浪费宝贵的计算时间和资源。
+  **查询执行错误：**Spark SQL 和 DataFrame 操作中的查询失败往往难以排查，因为错误消息可能无法明确指向根本原因，且在小型数据集上正常运行的查询在大规模处理时可能会突然失败。当这些错误发生在复杂转换管道的深层位置时，排查难度将进一步加剧，因为实际问题可能源于早期阶段的数据质量问题，而非查询逻辑本身。

**注意**  
 在生产环境中实施任何建议的更改之前，请仔细检查建议的更改。该服务根据模式和最佳实践提供建议，但您的特定用例可能需要考虑其他注意事项。

## 支持的区域
<a name="troubleshoot-spark-supported-regions"></a>

Apache Spark 的生成式人工智能故障排除已在以下区域推出：
+ **非洲**：开普敦（af-south-1）
+ **亚太地区**：香港（ap-east-1）、东京（ap-northeast-1）、首尔（ap-northeast-2）、大阪（ap-northeast-3）、孟买（ap-south-1）、新加坡（ap-southeast-1）、悉尼（ap-southeast-2）和雅加达（ap-southeast-3）
+ **欧洲地区**：法兰克福（eu-central-1）、斯德哥尔摩（eu-north-1）、米兰（eu-south-1）、爱尔兰（eu-west-1）、伦敦（eu-west-2）和巴黎（eu-west-3）
+ **中东**：巴林（me-south-1）和阿联酋（me-central-1）
+ **北美洲**：加拿大（ca-central-1）
+ **南美洲**：圣保罗（sa-east-1）
+ **美国**：弗吉尼亚州北部（us-east-1）、俄亥俄州（us-east-2）、北加利福尼亚（us-west-1）和俄勒冈州（us-west-2）