

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 詳細資訊中的 Spark 升級代理程式工作流程
<a name="emr-spark-upgrade-agent-workflow-details"></a>

若要啟動升級程序，您需要將 Spark 應用程式程式碼複製到開發人員環境 （本機或 EC2 或 [ Amazon SageMaker Unified Studio IDE Spaces](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. 移除不必要的步驟 - 範例：移除任何整合測試執行。僅在本機編譯/建置，然後繼續執行 EMR 驗證。

      1. 新增其他步驟 - 範例：新增步驟以在 EMR 驗證`tests/test_jobs/test_etl_job_x.py`之前執行測試檔案。

      1. 修改升級方法 - 範例：在建置和驗證步驟期間強制執行 Python 3.10 和 Java 17。

1. 代理程式會根據您的意見回饋重新產生計劃，並再次請求同意。此程序會持續進行，直到您核准最終計劃為止

1. **編譯和建置**：代理程式會進行反覆變更，以修正建置錯誤，直到應用程式成功編譯和建置為止。

1. **執行單位和整合測試**：如果專案有測試，代理程式將在成功建置後執行測試。如果任何測試失敗，代理程式會反覆修改原始程式碼，直到測試通過，再繼續進行 EMR 驗證。

1. **執行時間修正和驗證**：代理程式將驗證目標 EMR 叢集上的應用程式，並反覆修正任何執行時間錯誤，直到驗證成功為止。完成後，您會看到針對相容性所做的所有變更摘要。

1. **升級摘要**：升級完成後，代理程式將提供所有程式碼和組態變更的摘要、相依性版本更新，以及任何偵測到的資料品質不相符，供您檢閱。