

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

# AWS Glue 將 Spark 任務遷移至 5.1 AWS Glue 版
<a name="migrating-version-51"></a>

本主題說明 0.9、1.0、2.0、3.0、4.0 和 5.0 AWS Glue 版之間的變更，以允許您將 Spark 應用程式和 ETL 任務遷移至 AWS Glue 5.1。它還描述了 AWS Glue 5.1 中的功能以及使用它的優勢。

若要將此功能與 AWS Glue ETL 任務搭配使用，請在建立任務`Glue version`時**5.1**為 選擇 。

**Topics**
+ [新功能](#migrating-version-51-features)
+ [要遷移至 AWS Glue 5.1 的動作](#migrating-version-51-actions)
+ [移轉檢查清單](#migrating-version-51-checklist)
+ [從 AWS Glue 5.0 遷移至 AWS Glue 5.1](#migrating-version-51-from-50)
+ [從較舊 AWS Glue 版本遷移至 AWS Glue 5.1](#migrating-older-versions-to-51)
+ [連接器和 JDBC 驅動程式遷移 for AWS Glue 5.1](#migrating-version-51-connector-driver-migration)

## 新功能
<a name="migrating-version-51-features"></a>

本節說明 5.1 AWS Glue 版的新功能和優點。
+ Apache Spark 從 3.5.4 in AWS Glue 5.0 更新至 3.5.6 in AWS Glue 5.1。
+ 開放資料表格式 (OTF) 已更新為 Hudi 1.0.2、Iceberg 1.10.0 和 Delta Lake 3.3.2
+ **Iceberg 具體化視**觀表 - 建立和管理 Iceberg 具體化視觀表 (MV)。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/) 
+ **Iceberg 格式 3.0 版** - 擴展資料類型和現有中繼資料結構，以新增新功能。如需詳細資訊，請參閱 [Iceberg 資料表規格](https://iceberg.apache.org/spec/)。
+ **Hudi 完整資料表存取** - 根據您在 中定義的政策，Apache Spark 中 Apache Hudi 的完整資料表存取 (FTA) 控制 AWS Lake Formation。當任務角色具有完整的資料表存取權時，此功能可在 AWS Lake Formation 已註冊的資料表上啟用來自 AWS Glue ETL 任務的讀取和寫入操作。
+ **Spark 原生精細存取控制 (FGAC) 支援使用 AWS Lake Formation** - DDL/DML 操作 （例如 CREATE、ALTER、DELETE、DROP) 搭配已註冊 Apache Hive、Apache Iceberg 和 Delta Lake 資料表的精細存取控制 AWS Lake Formation。
+ **Spark 任務的稽核內容** - AWS CloudTrail 日誌中的 AWS Glue ETL 任務的稽核內容可供 AWS Glue 和 AWS Lake Formation API 呼叫使用。

**已知問題和限制**  
請注意下列已知問題和限制：
+ 檢視 SQL 子句的有限支援，用於建立具體化檢視、查詢重寫和增量重新整理。如需更多詳細資訊，請參閱 [Iceberg 具體化檢視功能文件頁面](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations) 
+ **Hudi FTA 寫入**要求在任務執行期間使用 HoodieCredentialedHadoopStorage 進行登入資料販賣。在執行 Hudi 任務時設定下列組態：

  `hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage` 
+ Hudi FTA 寫入支援僅適用於預設 Hudi 組態。自訂或非預設 Hudi 設定可能未完全支援，並可能導致非預期的行為。FTA 寫入模式也不支援 Hudi Merge-On-Read (MOR) 資料表的叢集。

**突破性變更**  
請注意下列變更：
+  S3A 檔案系統已將 EMRFS 取代為預設 S3 連接器。如需如何遷移的資訊，請參閱 [從 AWS Glue 5.0 遷移至 AWS Glue 5.1](#migrating-version-51-from-50)。

## 要遷移至 AWS Glue 5.1 的動作
<a name="migrating-version-51-actions"></a>

對於現有的任務，請將舊版 `Glue version` 變更為任務組態中的 `Glue 5.1`。
+ 在 AWS Glue Studio `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3`中，選擇 `Glue version`。
+ 在 API 中，選擇 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob) API 操作 `GlueVersion` 參數中的 **5.1**。

對於新任務，當您建立任務時請選擇 `Glue 5.1`。
+ 在主控台中，在 `Glue version` 中選擇 `Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)`。
+ 在 AWS Glue Studio `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3`中，選擇 `Glue version`。
+ 在 API 中，選擇 [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob) API 操作 `GlueVersion` 參數中的 **5.1**。

若要檢視來自 AWS Glue 2.0 或更早版本的 AWS Glue 5.1 Spark 事件日誌，[請使用 CloudFormation 或 Docker 啟動升級的 Spark 歷史記錄伺服器 for AWS Glue 5.1。](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html)

## 移轉檢查清單
<a name="migrating-version-51-checklist"></a>

檢閱此檢查清單以進行移轉：
+ 【Python】 將 boto 參考從 1.34 更新為 1.40。

## 從 AWS Glue 5.0 遷移至 AWS Glue 5.1
<a name="migrating-version-51-from-50"></a>

 AWS Glue 5.0 中存在的所有現有任務參數和主要功能都將存在於 AWS Glue 5.1 中。移轉時請注意下列變更：
+ 在 AWS Glue 5.1 中，S3A 檔案系統已取代 EMRFS 做為預設 S3 連接器。如果`spark.hadoop.fs.s3a.endpoint.region`未設定 `spark.hadoop.fs.s3a.endpoint`和 ，則 S3A 使用的預設區域為 `us-east-2`。這可能會導致問題，例如 S3 上傳逾時錯誤，尤其是 VPC 任務。若要緩解此變更造成的問題，請在 AWS Glue 5.1 中使用 S3A 檔案系統時設定 `spark.hadoop.fs.s3a.endpoint.region` Spark 組態。
+ 若要繼續使用 EMRFS 而非 S3A，請設定下列 Spark 組態：

  ```
      --conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate
  ```

請參閱 Spark 移轉文件：
+ [移轉指南：Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [移轉指南：SQL、資料集和 DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [移轉指南：結構化串流](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [升級 PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## 從較舊 AWS Glue 版本遷移至 AWS Glue 5.1
<a name="migrating-older-versions-to-51"></a>
+ 如需與 AWS Glue 4.0 到 AWS Glue 5.0 相關的遷移步驟，請參閱[從 AWS Glue 4.0 遷移到 AWS Glue 5.0。](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40)
+ 如需與 AWS Glue 3.0 至 AWS Glue 5.0 相關的遷移步驟，請參閱[從 AWS Glue 3.0 遷移至 AWS Glue 5.0。](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30)
+ 如需與 AWS Glue 2.0 到 AWS Glue 5.0 相關的遷移步驟，以及 2.0 和 4.0 AWS Glue 版之間的遷移差異清單，請參閱[從 AWS Glue 2.0 遷移到 AWS Glue 5.0。](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20)

## 連接器和 JDBC 驅動程式遷移 for AWS Glue 5.1
<a name="migrating-version-51-connector-driver-migration"></a>

如需已升級的 JDBC 和資料湖連接器版本，請參閱：
+ [附錄 B：JDBC 驅動程式升級](#migrating-version-51-appendix-jdbc-driver)
+ [附錄 C：連接器升級](#migrating-version-51-appendix-connector)
+ [附錄 D：開放式資料表格式升級](#migrating-version-51-appendix-open-table-formats)

下列變更適用於 for AWS Glue 5[附錄 D：開放式資料表格式升級](#migrating-version-51-appendix-open-table-formats).1 中識別的 OTF 版本升級。

**Apache Hudi**  
請注意下列變更：
+ 支援 Lake Formation 註冊資料表上的 FTA 讀取和寫入存取。

**Apache Iceberg**  
請注意下列變更：
+ 支援 Iceberg 格式第 3 版。支援下列功能：
  + 用於分割和排序的多引數轉換。
  + 資料列譜系追蹤。
  + 刪除向量。在[部落格文章](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/)中進一步了解 
  + 資料表加密金鑰。
  + 資料欄的預設值支援。
+ 支援 AWS Lake Formation 已註冊資料表上的 Spark 原生 FGAC 寫入。
+ Athena SQL 相容性 - 由於錯誤，無法讀取 EMR Spark 建立的 Iceberg V3 資料表： `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`

**Delta Lake**  
請注意下列變更：
+ 支援 Lake Formation 註冊資料表上的 FTA 讀取和寫入存取。

### 附錄 A：值得注意的相依性升級
<a name="migrating-version-51-appendix-dependencies"></a>

以下是相依性升級：


| 相依性 | in AWS Glue 5.1 版本 | in AWS Glue 5.0 版本 | in AWS Glue 4.0 版本 | in AWS Glue 3.0 版 | in AWS Glue 2.0 版本 |  AWS Glue 1.0 版 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Java | 17 | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.6 | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Scala | 2.12.18 | 2.12.18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15.2 | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2.73.0 | 2.69.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 | 
| Json4s | 3.7.0-M11 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Arrow | 12.0.1 | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Data Catalog 用戶端 | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | N/A | 
| AWS 適用於 Java 的 SDK | 2.35.5 | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3.11 | 3.11 | 3.10 | 3.7 | 2.7 和 3.6 | 2.7 和 3.6 | 
| Boto | 1.40.61 | 1.34.131 | 1.26 | 1.18 | 1.12 | N/A | 
| EMR DynamoDB 連接器 | 5.7.0 | 5.6.0 | 4.16.0 |  |  |  | 

### 附錄 B：JDBC 驅動程式升級
<a name="migrating-version-51-appendix-jdbc-driver"></a>

以下是 JDBC 驅動程式升級：


| 驅動程式 | JDBC 驅動程式 AWS Glue 5.1 版 | JDBC 驅動程式 AWS Glue 5.0 版 |  AWS Glue 4.0 中的 JDBC 驅動程式版本 | JDBC 驅動程式 in AWS Glue 3.0 版 | 過去版本的 JDBC 驅動程式 AWS Glue 版本 | 
| --- | --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2.0 | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 | 
| Oracle 資料庫 | 23.3.0.23.09 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 | 
| PostgreSQL | 42.7.3 | 42.7.3 | 42.3.6 | 42.2.18 | 42.1.0 | 
| Amazon Redshift |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP Hana | 2.20.17 | 2.20.17 | 2.17.12 |  |  | 
| Teradata | 20.00.00.33 | 20.00.00.33 | 20.00.00.06 |  |  | 

### 附錄 C：連接器升級
<a name="migrating-version-51-appendix-connector"></a>

以下是連接器升級：


| 驅動程式 | 連接器 in AWS Glue 5.1 版 |  AWS Glue 5.0 中的連接器版本 |  AWS Glue 4.0 中的連接器版本 | 連接器 in AWS Glue 3.0 版 | 
| --- | --- | --- | --- | --- | 
| EMR DynamoDB 連接器 | 5.7.0 | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.2 | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.3.0 | 10.0.4 | 3.0.0 | 
| Snowflake | 3.1.1 | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0.32.2 | 0.32.2 | 0.32.2 |  | 
| AzureCosmos | 4.33.0 | 4.33.0 | 4.22.0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 | 3.3.5 |  | 

### 附錄 D：開放式資料表格式升級
<a name="migrating-version-51-appendix-open-table-formats"></a>

以下是開放式資料表格式升級：


| OTF | 連接器 in AWS Glue 5.1 版 |  AWS Glue 5.0 中的連接器版本 |  AWS Glue 4.0 中的連接器版本 | 連接器 in AWS Glue 3.0 版 | 
| --- | --- | --- | --- | --- | 
| Hudi | 1.0.2 | 0.15.0 | 0.12.1 | 0.10.1 | 
| Delta Lake | 3.3.2 | 3.3.0 | 2.1.0 | 1.0.0 | 
| Iceberg | 1.10.0 | 1.7.1 | 1.0.0 | 0.13.1 | 