

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

# Spark 升级代理工作流程详情
<a name="emr-spark-upgrade-agent-workflow-details"></a>

要启动升级过程，您需要将 Spark 应用程序代码克隆到您的开发者环境（本地或 EC2 或 [Amazon SageMaker Unified Studio IDE 空间](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/create-space.html)），最好是初始化 Git 版本控制。此外，运行目标 Spark 版本的 EMR 集群必须已配置并可供访问。最后，应配置指定的 Amazon S3 存储桶路径，以便在整个升级过程中存储部署项目和升级摘要。

确定这些要求后，您可以提交如下提示以启动升级工作流程：

```
Upgrade my Spark application <local-project-path> from EMR version 6.0.0 to 7.12.0.   
Use EMR-EC2 Cluster <cluster-id> to run the validation and s3 paths   
s3://<please fill in your staging bucket path> to store updated application artifacts.
```

此时，代理将使用专门的工具协调升级（有关更多[详细信息](emr-spark-upgrade-agent-tools.md)）。工作流程遵循以下步骤：

1. **生成计划**：代理将分析您的项目结构并生成升级计划。查看计划并征得您的同意后继续。

1. **计划审查和自定义**：当系统提示您查看计划时，您有以下几种选择：

   1. **按原样进行**：接受计划并继续执行

   1. **提供反馈**：通过以下方式自定义计划：

      1. 移除不必要的步骤-示例：移除所有集成测试执行。仅 compile/build 在本地，然后继续进行 EMR 验证。

      1. 添加其他步骤-示例：在 EMR 验证`tests/test_jobs/test_etl_job_x.py`之前添加运行测试文件的步骤。

      1. 修改升级方法-示例：在构建和验证步骤中强制执行 Python 3.10 和 Java 17。

1. 代理将根据您的反馈重新生成计划，并再次征得您的同意。此过程一直持续到您批准最终计划为止

1. **编译和构建**：代理将进行迭代更改以修复生成错误，直到应用程序成功编译和构建。

1. **运行单元测试和集成测试**：如果项目有测试，代理将在成功构建后运行测试。如果有任何测试失败，代理将迭代修改源代码，直到测试通过，然后再继续进行 EMR 验证。

1. **运行时修复和验证**：代理将在目标 EMR 集群上验证应用程序，并迭代修复所有运行时错误，直到验证成功。完成后，您将看到为兼容性而做的所有更改的摘要。

1. 升级@@ **摘要：升级**完成后，代理将提供所有代码和配置更改、依赖项版本更新以及任何检测到的数据质量不匹配的摘要，供您查看。