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 version6.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 資料類型,可簡化半結構化資料管理並加快讀取速度。

    • 奈秒精度時間戳記。

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

  • 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 會視需要自動產生此虛擬環境。

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

  • 連接器升級 — 已更新 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 的 SDK v1 已移除。只有 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=TruegetResolvedOptions() 以還原舊行為。

要遷移至 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 相容性的程式碼。移除已棄用模組的用量 (例如,、impcgicgitb)。

  • 【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以完全控制相依性。

  • 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 資料類型。如果您想要將這些新功能與視覺化 ETL 搭配使用,建議您將 ETL 任務遷移至 Amazon SageMaker Unified Studio。

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

  • Athena SQL 'format-version'='3'無法讀取使用 建立的 Iceberg 資料表 (錯誤: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
Pandas 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.17.0 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