View a markdown version of this page

AWS Glue 將 Spark 任務遷移至 6.0 AWS Glue 版 - AWS Glue

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

AWS Glue 將 Spark 任務遷移至 6.0 AWS Glue 版

本主題說明 5.1 和 6.0 AWS Glue 版之間的變更,可讓您將 Spark 應用程式和 ETL 任務遷移至 AWS Glue 6.0。它還描述了 AWS Glue 6.0 中的功能以及使用它的優勢。

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

新功能

本節說明 6.0 AWS Glue 版的新功能和優點。

  • Apache Spark 從 3.5.6 in AWS Glue 5.1 升級到 4.1.1 in AWS Glue 6.0。

  • Scala 從 2.12.18 升級到 2.13.17。

  • Python 從 3.11 升級到 3.13。

  • 開放資料表格式 (OTF) 已更新為 Hudi 1.1.1、Iceberg 1.11.0 和 Delta Lake 4.2.0。

  • Iceberg 格式第 3 版 — 擴展資料類型和現有中繼資料結構,以新增新功能,包括:

    • 具有變體碎片的 VARIANT 資料類型,可簡化半結構化資料管理並加快讀取速度。

    • 奈秒精度時間戳記。

    • 地理空間資料類型 (幾何和地理)。

    升級到 Iceberg v3 是單向變更

    如果您升級 Iceberg 資料表以格式化第 3 版,則無法將其降級回第 2 版,Iceberg 會拒絕ALTER TABLE ... SET TBLPROPERTIES('format-version'='2')操作。如果您使用另一個不支援 Iceberg v3 的服務,請將其保留為 Iceberg v2 資料表,不要將其升級至 v3。

  • Spark 宣告管道 (SDP) — 使用 SQL 或 DataFrame API 定義end-to-end資料管道的新宣告架構,支援串流資料表和具體化視觀表。如需詳細資訊,請參閱Spark 宣告管道。

  • Spark Connect for Interactive Sessions — 透過 Spark Connect 通訊協定啟用 AWS Glue 互動式工作階段的精簡型用戶端連線,以支援遠端開發工作流程。

  • Arrow 原生 Python UDFs/UDTFs使用 Apache Arrow 原生單欄式格式改善 Python 使用者定義函數的效能。

  • 客戶受管或服務產生的 Python 虛擬環境 (--python-virtual-env) — 您可以建置並提供自己的 Python venv,以在執行時間 AWS Glue 連接到 Spark 驅動程式和執行器,提供對相依性管理的完全控制。當現有任務遷移至 AWS Glue 6.0 時, AWS Glue 會視需要自動產生此虛擬環境。如需詳細資訊,請參閱搭配 Glue 使用 Python AWS 虛擬環境。

  • 串流增強功能 — 無狀態串流的即時模式,具有毫秒級延遲。如需詳細資訊,請參閱啟用串流任務的即時模式。

  • 連接器升級 — 已更新 Amazon Redshift、MongoDB、Snowflake 和其他連接器。如需完整版本詳細資訊附錄 C:連接器升級,請參閱 。

已知問題和限制

請注意下列已知問題和限制:

  • 根據預設,在 Spark 4.1 中會啟用 ANSI 模式。先前在溢位時傳回 NULL 的操作 (例如整數算術、轉換操作) 現在會擲回例外狀況。設定為spark.sql.ansi.enabled=false還原先前的行為。

  • Spark 宣告管道 (SDP) 是一項新功能,對特定 SQL 建構的支援有限。如需目前限制,請參閱 Spark 宣告管道 文件。

  • Athena SQL 無法讀取在 AWS Glue 6.0 中建立的 Iceberg v3 資料表 (錯誤:Cannot read unsupported version 3)。使用 Iceberg v2 與 Athena 進行跨引擎相容性。

  • Python 3.13 會移除數個已取代的模組,並變更某些標準程式庫函數的行為。檢閱 Python 3.13 遷移指南中的相容性。

  • AWS 適用於 Java 的 SDK 2.x 與 —6.0 的相容性--user-jars-first包括適用於 Java 的 AWS SDK 2.x 2.44.6 版。 AWS Glue 如果您使用--user-jars-first任務參數搭配自訂 JAR,該 JAR 隨附舊版的適用於 Java 的 AWS SDK 2.x,您的任務可能會失敗,並出現 java.lang.NoSuchFieldError或類似錯誤。當您自訂 JAR 中綁定的 SDK 缺少執行時間相依的 AWS Glue 類別、欄位或方法時,就會發生這些失敗。為了避免此問題,請確定您隨 提供的任何自訂 JAR --user-jars-first都使用適用於 Java 的 AWS SDK 2.x 2.44.6 版或更新版本。

突破性變更

請注意下列變更:

  • EMRFS 已移除。S3A 是 AWS Glue 6.0 中唯一的 S3 檔案系統。com.amazon.ws.emr.hadoop.fs.EmrFileSystem 類別不再可用。使用s3://路徑的任務會自動使用 S3A。如果您先前已設定 EMRFS 特定的組態 (例如 fs.s3.consistent.*),請將其移除。

  • AWS 適用於 Java v1 的 SDK 已移除。只有 AWS SDK v2 (2.44.6) 可用。匯入com.amazonaws.services.*套件的任務必須遷移至 software.amazon.awssdk.services.*。

  • Scala 從 2.12 升級到 2.13。針對 Scala 2.12 編譯的自訂 JARs 無法運作。針對 Scala 2.13.17 重新編譯。金鑰變更:JavaConversions已移除 (使用 CollectionConverters)、已MutableList移除 (使用 ListBuffer)、平行集合需要個別匯入。

  • Spark 4.1 API 變更:

  • CreateSession API 驗證 — 對互動式工作階段的工作階段參數進行其他驗證。先前無提示接受的無效組態現在可能會傳回錯誤。

  • getResolvedOptions 行為變更 — 預設會停用引數字首比對 (allow_abbrev=False)。使用完整引數名稱,或傳遞allow_abbrev=True至 getResolvedOptions() 以還原舊行為。

要遷移至 AWS Glue 6.0 的動作

對於現有的任務,請將舊版 Glue version 變更為任務組態中的 Glue 6.0。

  • 在 AWS Glue Studio Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3中,選擇 Glue version。

  • 在 API 中,6.0選擇 UpdateJob API 操作中的 GlueVersion 參數。

對於新任務,當您建立任務時請選擇 Glue 6.0。

  • 在主控台中,在 Glue version 中選擇 Spark 4.1.1, Python 3 (Glue Version 6.0) or Spark 4.1.1, Scala 2 (Glue Version 6.0)。

  • 在 AWS Glue Studio Glue 6.0 - Supports Spark 4.1.1, Scala 2, Python 3中,選擇 Glue version。

  • 在 API 6.0中,在 CreateJob API 操作的 GlueVersion 參數中選擇 。

為了協助遷移任務,您可以使用 的生成式 AI 升級Apache Spark,將 AWS Glue ETL 任務從舊版 (2 AWS Glue .0 和更新版本) 升級到最新版本。 AWS Glue

注意

您可以使用 Spark 疑難排解代理程式來疑難排解 AWS Glue ETL 任務。

移轉檢查清單

檢閱此檢查清單以進行移轉:

  • 【Scala】 針對 Scala 2.13.17 重新編譯自訂 JARs。使用 CollectionConverters 取代 JavaConversions。

  • 【Python】 更新 Python 3.13 相容性的程式碼。移除已棄用模組的用量 (例如,、impcgi、cgitb)。

  • 【Python】 將 boto3 參考從 1.40 更新至 1.42。

  • 【Spark SQL】 檢閱 ANSI 模式影響的查詢。spark.sql.ansi.enabled=false 視需要新增 。

  • 【SDK】 將任何 AWS SDK v1 匯入 (com.amazonaws.*) 取代為 SDK v2 (software.amazon.awssdk.*)。

  • 【S3】 移除 EMRFS 特定的組態。S3A 現在是預設且只有 S3 連接器。

  • 【相依性】 更新--extra-jars為針對 Scala 2.13 和 Spark 4.1 編譯的版本。

從 AWS Glue 5.1 遷移至 AWS Glue 6.0

存在於 AWS Glue 5.1 中的所有現有任務參數和主要功能都將存在於 AWS Glue 6.0 中。移轉時請注意下列變更:

  • S3 檔案系統:EMRFS 不再可用。S3A 是唯一的 S3 連接器。如果您先前已設定 spark.hadoop.fs.s3a.endpoint.region,請繼續使用它。如果未設定,請確定您的 VPC 端點或網路組態允許 S3A 解析正確的區域。

  • Scala 二進位相容性: AWS Glue 6.0 使用 Scala 2.13。使用 Scala 2.12 --extra-jars 編譯的任何 都會使用 NoSuchMethodError或 來失敗。 ClassNotFoundException重新編譯所有自訂 Scala/Java JARs。

  • Spark SQL 行為變更:

    • ANSI 模式預設為 ON。整數溢出、無效的轉換和陣列索引out-of-bounds回例外狀況,而不是傳回 NULL。

    • spark.sql.legacy.timeParserPolicy 預設已變更。日期/時間剖析的行為可能不同。

    • SQL 中的隱含string-to-numeric轉換可能會在 ANSI 模式下失敗。

  • Python 版本:Python 3.13 是執行時間。--additional-python-modules 此功能會繼續運作。請考慮遷移至 --python-virtual-env以完全控制相依性。如需遷移步驟,請參閱 搭配 Glue 使用 Python AWS 虛擬環境。

  • AWS SDK:只有 SDK v2 可用。如果您的指令碼使用 boto3 (Python),則不需要變更 — boto3 會繼續運作。對於直接使用 AWS SDK 的 Scala/Java 任務,請遷移至 v2 APIs。

請參閱 Spark 移轉文件:

從舊版遷移 AWS Glue 至 AWS Glue 6.0

Connector 和 JDBC 驅動程式遷移 for AWS Glue 6.0

如需已升級的 JDBC 和資料湖連接器版本,請參閱:

下列變更適用於 附錄 D:開放式資料表格式升級 for AWS Glue 6.0 中識別的 OTF 版本升級。

Apache Iceberg

請注意下列變更:

  • Iceberg 升級到 1.11.0,並完全支援 Apache Iceberg 第 3 版規格。

  • 具有變體碎片的 VARIANT 資料類型,用於最佳化半結構化資料查詢。

  • 奈秒精度時間戳記。

  • 地理空間資料類型 (幾何和地理)。

自 AWS Glue AWS Glue 5.1 起,ETL 已支援下列 Iceberg 功能:刪除向量 (merge-on-read),以及透過first-row-id中繼資料進行資料列歷程追蹤。

Apache Hudi

請注意下列變更:

  • Hudi 升級至 1.1.1。

  • 持續支援 AWS Lake Formation 已註冊資料表上的 FTA 讀取和寫入存取。

Delta Lake

請注意下列變更:

  • Delta Lake 升級至 4.2.0。

  • 持續支援 AWS Lake Formation 已註冊資料表上的 FTA 讀取和寫入存取。

已知限制

下列限制適用於 AWS Glue 6.0:

  • 不支援 Iceberg 原生資料表加密金鑰。

  • 不支援 Iceberg 多引數轉換。

  • 只有 Spark DataFrames 支援新的 Iceberg v3 資料類型。這些功能不適用於 DynamicFrames。

  • AWS Glue Studio 中的視覺化 ETL 不支援新的 Iceberg v3 資料類型。若要使用這些新功能,請使用 AWS Glue API、 SDK 或 AWS CLI。或者,您可以在採用 技術的 Amazon SageMaker Unified Studio 中使用視覺化 ETL AWS Glue。

  • VARIANT 資料欄不支援精細存取控制 (FGAC)。

  • 使用 建立的 Iceberg 資料表'format-version'='3'無法由 Athena SQL 讀取 (錯誤:Cannot read unsupported version 3)。使用 Iceberg v2 與 Athena 進行跨引擎相容性。

附錄 A:值得注意的相依性升級

以下是相依性升級:

相依性 in AWS Glue 6.0 版 in AWS Glue 5.1 版本 in AWS Glue 5.0 版本 in AWS Glue 4.0 版本
Java 17 17 17 8
Spark 4.1.1 3.5.6 3.5.4 3.3.0-amzn-1
Hadoop 3.4.2 3.4.1 3.4.1 3.3.3-amzn-0
Scala 2.13.17 2.12.18 2.12.18 2.12
Jackson 2.20.0 2.15.2 2.15.2 2.12
Hive 2.3.10-amzn-1 2.3.9-amzn-4 2.3.9-amzn-4 2.3.9-amzn-2
Arrow 18.3.0 12.0.1 12.0.1 7.0.0
AWS Glue Data Catalog 用戶端 4.11.0 4.9.0 4.5.0 3.7.0
AWS 適用於 Java 的 SDK 2.44.6 (僅限 v2) 2.35.5 2.29.52 1.12
Python 3.13 3.11 3.11 3.10
Boto3 1.42.84 1.40.61 1.34.131 1.26
Json4s 3.7.0-M11 3.7.0-M11 3.7.0-M11 3.7.0-M11
EMR DynamoDB 連接器 6.1.0 5.7.0 5.6.0 4.16.0
Netty 4.2.7 N/A N/A N/A
Parquet 1.16.0 N/A N/A N/A
NumPy 2.4.4 N/A N/A N/A
熊貓 2.3.3 N/A N/A N/A

附錄 B:JDBC 驅動程式升級

以下是 JDBC 驅動程式升級:

驅動程式 JDBC 驅動程式 in AWS Glue 6.0 版 JDBC 驅動程式 AWS Glue 5.1 版 JDBC 驅動程式 AWS Glue 5.0 版
MySQL 8.0.33 8.0.33 8.0.33
Microsoft SQL Server 10.2.0 10.2.0 10.2.0
Oracle 資料庫 23.4.0.24.05 23.3.0.23.09 23.3.0.23.09
PostgreSQL 42.7.3 42.7.3 42.7.3
Amazon Redshift

redshift-jdbc42-2.2.7

redshift-jdbc42-2.1.0.29

redshift-jdbc42-2.1.0.29

MariaDB 3.5.7 N/A N/A

附錄 C:連接器升級

以下是連接器升級:

連接器 in AWS Glue 6.0 版 in AWS Glue 5.1 版本 in AWS Glue 5.0 版本
Spark Redshift 6.7.0 6.4.2 6.4.0
Spark SQL Kinesis 2.1.0 N/A N/A
MongoDB 11.0.1 10.3.0 10.3.0
Snowflake 3.1.8 3.1.1 3.0.0
OpenSearch 2.0.0 1.2.0 1.2.0
EMR DynamoDB 連接器 6.1.0 5.7.0 5.6.0

附錄 D:開放式資料表格式升級

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

OTF in AWS Glue 6.0 版 in AWS Glue 5.1 版本 in AWS Glue 5.0 版本 in AWS Glue 4.0 版本
Hudi 1.1.1 1.0.2 0.15.0 0.12.1
Delta Lake 4.2.0 3.3.2 3.3.0 2.1.0
Iceberg 1.11.0 1.10.0 1.7.1 1.0.0