本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本主題說明 0.9、1.0、2.0、3.0 和 4.0 AWS Glue 版之間的變更,以允許您將 Spark 應用程式和ETL任務遷移至 AWS Glue 5.0。它還說明 AWS Glue 5.0 中的功能以及使用它的優勢。
若要將 AWS Glue ETL此功能與任務搭配使用,請在建立任務Glue version
時5.0
為 選擇 。
主題
新功能
本節說明 5.0 AWS Glue 版的新功能和優點。
-
Apache Spark 從 3.3.0 in AWS Glue 4.0 更新至 3.5.2 in AWS Glue 5.0。請參閱 從 Spark 3.3.0 到 Spark 3.5.2 的主要增強功能。
-
使用 Lake Formation 的 Spark 原生精細存取控制 (FGAC)。如需詳細資訊,請參閱使用 AWS Glue 搭配 AWS Lake Formation 進行精細存取控制。
請注意 Spark 原生 的下列考量或限制FGAC:
目前不支援資料寫入
透過
GlueContext
使用 Lake Formation 寫入 Iceberg 需要改用IAM存取控制
-
支援 Amazon S3 Access Grants 做為 Amazon S3 資料的可擴展存取控制解決方案 AWS Glue。如需詳細資訊,請參閱搭配 使用 Amazon S3 Access Grants AWS Glue。
-
開放資料表格式 (OTF) 已更新為 Hudi 0.15.0、Iceberg 1.6.1 和 Delta Lake 3.2.1
-
Amazon SageMaker Unified Studio 支援。
-
Amazon SageMaker Lakehouse 和資料抽象整合。如需詳細資訊,請參閱從 查詢中繼存放區資料目錄 AWS Glue ETL。
-
支援使用 安裝其他 Python 程式庫
requirements.txt
。如需詳細資訊,請參閱使用 requirements.txt AWS 在 Glue 5.0 中安裝其他 Python 程式庫。 -
AWS Glue 5.0 支援 Amazon 中的資料譜系。 DataZone您可以設定 AWS Glue 在 Spark 任務執行期間自動收集譜系資訊,並傳送要在 Amazon 中視覺化的譜系事件 DataZone。如需詳細資訊,請參閱 Amazon 中的資料譜系 DataZone。
若要在 AWS Glue 主控台上設定,請開啟產生譜系事件,然後在任務詳細資訊索引標籤上輸入您的 Amazon DataZone 網域 ID。
或者,您可以提供下列任務參數 (提供您的 DataZone 網域 ID):
索引鍵:
--conf
值:
extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener —conf spark.openlineage.transport.type=amazon_datazone_api -conf spark.openlineage.transport.domainId=<your-domain-ID>
-
連接器和JDBC驅動程式更新。如需詳細資訊,請參閱 附錄 B:JDBC驅動程式升級 和 附錄 C:連接器升級。
-
Java 從 8 更新至 17。
-
為 AWS Glue
G.1X
和G.2X
工作者增加的儲存空間,磁碟空間分別增加到 94GB 和 138GB。如需詳細資訊,請參閱 任務 支援 AWS SDK Java 第 2 版 - AWS Glue 5.0 任務,如果任務支援 v2,則可以使用適用於 Java 第 1.12.569
版或 2.28.8 版的 。適用於 Java 2.x AWS SDK的 是 1.x 版程式碼基礎的主要重寫。它建置在 Java 8+ 上,並新增了數個經常請求的功能。這包括對非封鎖 I/O 的支援,以及在執行時間插入不同HTTP實作的能力。如需詳細資訊,包括從 SDK for Java v1 到 v2 的遷移指南,請參閱 AWS SDK for Java 第 2 版指南。
重大變更
請注意下列重大變更:
GlueContext
Glue 4.0 或 Glue 5.0 不支援具有 AWS Lake Formation 許可的 型資料表層級存取控制。在 Glue 5.0 中使用新的 Spark 原生精細存取控制 (FGAC)。不支援向量化SIMDCSV讀取器。
不支援持續記錄至輸出日誌群組。請改用
error
日誌群組。AWS Glue 任務執行洞見
job-insights-rule-driver
已棄用。job-insights-rca-driver
日誌串流現在位於錯誤日誌群組中。不支援 Athena 型自訂/市場連接器。
不支援 Adobe Marketo Engage、Facebook Ads、Google Ads、Google Analytics 4、Google Sheets、Hubspot、Instagram Ads、Intercom、Jira Cloud、Oracle NetSuite、Salesforce、Salesforce Marketing Cloud、Salesforce Marketing Cloud 帳戶參與度、SAPOData ServiceNow、Slack、Snapchat Ads、Stripe、Zendesk 和 Zoho CRM 連接器。
從 Spark 3.3.0 到 Spark 3.5.2 的主要增強功能
請注意下列增強功能:
-
適用於 Spark Connect 的 Python 用戶端 (SPARK-39375
)。 -
實作對資料表中資料欄DEFAULT值的支援 (SPARK-38334
)。 -
支援「橫向資料欄別名參考」(SPARK-27561
)。 -
強化錯誤類別的SQLSTATE用量 (SPARK-41994
)。 -
根據預設,啟用 Bloom 篩選條件聯結 (SPARK-38841
)。 -
為大型應用程式 (SPARK-41053
) 提供更佳的 Spark 使用者介面可擴展性和驅動程式穩定性。 -
結構化串流中的非同步進度追蹤 (SPARK-39591
)。 -
結構化串流中的 Python 任意狀態處理 (SPARK-40434
)。 -
Pandas API涵蓋範圍改善 (SPARK-42882
) 和 PySpark (SPARK-39405 ) 中的 NumPy 輸入支援。 -
提供 PySpark 使用者定義函數的記憶體分析器 (SPARK-40281
)。 -
實作 PyTorch 分配器 (SPARK-41589
)。 -
發佈SBOM成品 (SPARK-41893
)。 -
IPv6僅支援 環境 (SPARK-39457
)。 -
自訂 K8s 排程器 (Apache YuniKorn 和 Volcano) GA (SPARK-42802
)。 -
Spark Connect (SPARK-42554
) 和 (SPARK-43351 ) 中的 Scala 和 Go 用戶端支援。 -
PyTorch基於 的分散式 ML 支援 Spark Connect (SPARK-42471
)。 -
Python 和 Scala 中 Spark Connect 的結構式串流支援 (SPARK-42938
)。 -
Pandas API支援 Python Spark Connect 用戶端 (SPARK-42497
)。 -
介紹 Arrow Python UDFs(SPARK-40307
)。 -
支援 Python 使用者定義的資料表函數 (SPARK-43798
)。 -
將 PySpark 錯誤遷移至錯誤類別 (SPARK-42986
)。 -
PySpark 測試架構 (SPARK-44042
)。 -
新增對 Datasketches HllSketch (SPARK-16484
) 的支援。 -
內建SQL函數改進 (SPARK-41231
)。 -
IDENTIFIER 子句 (SPARK-43205
)。 -
將SQL函數新增至 Scala、Python 和 R API(SPARK-43907
)。 -
新增SQL函數的具名引數支援 (SPARK-43922
)。 -
如果隨機資料遷移 (SPARK-41469
),請避免在已解除委任的執行器上重新執行不必要的任務遺失。 -
分散式 ML <> 火花連接 (SPARK-42471
)。 -
DeepSpeed 分配器 (SPARK-44264
)。 -
實作 RocksDB 狀態存放區 (SPARK-43421
) 的變更日誌檢查點。 -
在運算子之間引入浮水印傳播 (SPARK-42376
)。 -
介紹 dropDuplicatesWithinWatermark (SPARK-42931
)。 -
RocksDB 狀態存放區提供者記憶體管理增強功能 (SPARK-43311
)。
要遷移至 AWS Glue 5.0 的動作
對於現有的任務,請將舊版 Glue version
變更為任務組態中的 Glue 5.0
。
-
在 AWS Glue Studio
Glue 5.0 - Supports Spark 3.5.2, Scala 2, Python 3
中,選擇Glue version
。 -
在
5.0
中API,選擇UpdateJob
API操作中的GlueVersion
參數。
對於新任務,當您建立任務時請選擇 Glue 5.0
。
-
在主控台中,在
Glue version
中選擇Spark 3.5.2, Python 3 (Glue Version 5.0) or Spark 3.5.2, Scala 2 (Glue Version 5.0)
。 -
在 AWS Glue Studio
Glue 5.0 - Supports Spark 3.5.2, Scala 2, Python 3
中,選擇Glue version
。 -
在
5.0
中API,選擇CreateJob
API操作中的GlueVersion
參數。
若要檢視來自 AWS Glue 2 AWS Glue .0 或更早版本的 5.0 Spark 事件日誌,請使用 AWS CloudFormation 或 Docker 啟動升級的 Spark 歷史記錄伺服器 for AWS Glue 5.0。
遷移檢查清單
檢閱此檢查清單以進行遷移:
-
Java 17 更新
-
【Scala】 從 v1 升級 AWS SDK到 v2
-
Python 3.10 到 3.11 遷移
-
【Python】 將 boto 參考從 1.26 更新為 1.34
AWS Glue 5.0 功能
本節會更詳細地說明 AWS Glue 功能。
從 查詢中繼存放區資料目錄 AWS Glue ETL
您可以註冊您的 AWS Glue 任務來存取 AWS Glue Data Catalog,這可讓資料表和其他中繼存放區資源用於分散消費者。Data Catalog 支援多目錄階層,可統一 Amazon S3 資料湖中的所有資料。它還提供 Hive 中繼存放區API和開放原始碼 Apache Iceberg API 來存取資料。這些功能可供 AWS Glue 和其他資料導向服務使用,例如 Amazon EMR、Amazon Athena 和 Amazon Redshift。
當您在 Data Catalog 中建立資源時,您可以從支援 Apache Iceberg REST API. AWS Lake Formation manages 許可的任何SQL引擎存取資源。在組態之後,您可以使用熟悉的應用程式查詢這些中繼存放區資源,利用 AWS Glue的功能來查詢不同的資料。這些包括 Apache Spark 和 Trino。
中繼資料資源的組織方式
資料是使用 以目錄、資料庫和資料表的邏輯階層進行組織: AWS Glue Data Catalog
目錄 – 邏輯容器,可存放來自資料存放區的物件,例如結構描述或資料表。
資料庫 – 整理目錄中的資料表和檢視等資料物件。
資料表和檢視 – 資料庫中的資料物件,提供具有可理解結構描述的抽象層。它們可讓您輕鬆存取基礎資料,這些資料可能採用各種格式,並位於各種位置。
從 AWS Glue 4.0 遷移至 AWS Glue 5.0
AWS Glue 4.0 中存在的所有現有任務參數和主要功能都將存在於 AWS Glue 5.0 中,但機器學習轉換除外。
已新增下列新參數:
-
--enable-lakeformation-fine-grained-access
:啟用 AWS Lake Formation 資料表中的精細存取控制 (FGAC) 功能。
請參閱 Spark 遷移文件:
從 AWS Glue 3.0 遷移至 AWS Glue 5.0
注意
如需與 AWS Glue 4.0 相關的遷移步驟,請參閱 從 AWS Glue 3.0 遷移至 AWS Glue 4.0。
AWS Glue 3.0 中存在的所有現有任務參數和主要功能都將存在於 AWS Glue 5.0 中,但機器學習轉換除外。
從 AWS Glue 2.0 遷移至 AWS Glue 5.0
注意
如需與 AWS Glue 4.0 相關的遷移步驟,以及 3.0 和 4.0 AWS Glue 版之間的遷移差異清單,請參閱 從 AWS Glue 3.0 遷移至 AWS Glue 4.0。
另請注意 3.0 和 2.0 AWS Glue 版之間的下列遷移差異:
除了機器學習轉換之外, AWS Glue 2.0 中存在的所有現有任務參數和主要功能都將存在於 AWS Glue 5.0 中。
單獨的數個 Spark 變更可能需要修改指令碼,以確保沒有被引用刪除的功能。例如,Spark 3.1.1 和更新版本不會啟用 Scala-untyped,UDFs但 Spark 2.4 允許它們。
不支援 Python 2.7。
現有 AWS Glue 2.0 任務中提供的任何額外 jar 都可能會導致相互衝突的相依性,因為有多個相依性有升級。您可以避免 classpath 與
--user-jars-first
任務參數衝突。loading/saving of timestamps from/to parquet 檔案行為的變更。如需詳細資訊,請參閱從 Spark SQL 3.0 升級至 3.1。
驅動程式/執行器組態的不同 Spark 任務平行處理。您可以傳遞任務引數來調整
--executor-cores
任務平行處理。
適用於 AWS Glue 5.0 的連接器和JDBC驅動程式遷移
如需已升級的 JDBC和 資料湖連接器版本,請參閱:
下列變更適用於 Glue 5.0 附錄中識別的連接器或驅動程式版本。
Amazon Redshift
請注意下列變更:
新增對三部分資料表名稱的支援,以允許連接器查詢 Redshift 資料共用資料表。
更正 Spark 的映射
ShortType
以使用 Redshift,SMALLINT
而不是INTEGER
更符合預期的資料大小。新增對 Amazon Redshift Serverless 自訂叢集名稱 (CNAME) 的支援。
Apache Hudi
請注意下列變更:
支援記錄層級索引。
支援自動產生記錄金鑰。現在您不需要指定記錄金鑰欄位。
Apache Iceberg
請注意下列變更:
使用 支援精細存取控制 AWS Lake Formation。
支援分支和標記,這些分支和標記是具有其獨立生命週期的快照參考。
已新增變更日誌檢視程序,該程序會產生檢視,其中包含在指定期間或特定快照之間對資料表所做的變更。
Delta Lake
請注意下列變更:
支援 Delta Universal Format (UniForm),可透過 Apache Iceberg 和 Apache Hudi 進行無縫存取。
支援實作範例的 Merge-on-Read刪除向量。
AzureCosmos
請注意下列變更:
新增階層式分割區金鑰支援。
新增了將自訂結構描述與 StringType (原始 json) 用於巢狀屬性的選項。
新增了組態選項
spark.cosmos.auth.aad.clientCertPemBase64
,允許使用 SPN(ServicePrincipal 名稱) 身分驗證搭配憑證,而非用戶端秘密。
如需詳細資訊,請參閱 Azure Cosmos 資料庫 Spark 連接器變更日誌
Microsoft SQL 伺服器
請注意下列變更:
TLS 加密預設為啟用。
當 encrypt = false 但伺服器需要加密時,會根據
trustServerCertificate
連線設定驗證憑證。aadSecurePrincipalId
和 已aadSecurePrincipalSecret
棄用。getAADSecretPrincipalId
API 已移除。新增擷取 時對 SQL_Variant 資料類型的支援
DateTimeOffset
。指定領域時新增CNAME了解析度。
MongoDB
請注意下列變更:
支援使用 Spark 結構化串流的微型批次模式。
BSON 資料類型的支援。
新增了在使用微型批次或連續串流模式時讀取多個集合的支援。
如果
collection
組態選項中使用的集合名稱包含逗號,Spark Connector 會將其視為兩個不同的集合。若要避免這種情況,您必須在逗號前面加上反斜線 (\) 來逸出逗號。如果
collection
組態選項中使用的集合名稱為「*」,Spark Connector 會將其解譯為掃描所有集合的規格。若要避免這種情況,您必須在星號前面加上反斜線 (\) 來逸出星號。如果
collection
組態選項中使用的集合名稱包含反斜線 (\),Spark Connector 會將反斜線視為逸出字元,這可能會變更解譯值的方式。若要避免這種情況,您必須在反斜線前面使用另一個反斜線來逸出反斜線。
如需詳細資訊,請參閱適用於 Spark 版本備註的 MongoDB 連接器
Snowflake
請注意下列變更:
引進了新
trim_space
參數,您可以在儲存至 Snowflake 資料表時,用來自動修剪StringType
資料欄的值。預設:false
。根據預設,在工作階段層級停用
abort_detached_query
參數。使用 時,移除
SFUSER
參數的需求OAUTH。已移除進階查詢下推功能。該功能的替代方案可供使用。例如,使用者可以直接從 Snowflake SQL查詢載入資料,而不是從 Snowflake 資料表載入資料。
如需詳細資訊,請參閱 Snowflake Connector for Spark 版本備註
附錄 A:值得注意的相依性升級
以下是相依性升級:
相依性 | 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 | 8 | 8 | 8 | 8 |
Spark | 3.5.2-amzn-1 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 |
Hadoop | 3.4.0-amzn-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 | 2.12 | 2.11 | 2.11 |
Jackson | 2.15.2 | 2.12 | 2.12 | 2.11 | 2.11 |
Hive | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 |
EMRFS | 2.66.0 | 2.54.0 | 2.46.0 | 2.38.0 | 2.30.0 |
Json4s | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x |
Arrow | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 |
AWS Glue Data Catalog 用戶端 | 4.2.0 | 3.7.0 | 3.0.0 | 1.10.0 | N/A |
適用於 Java 的AWS SDK | 2.28.8 | 1.12 | 1.12 | ||
Python | 3.11 | 3.10 | 3.7 | 2.7 和 3.6 | 2.7 和 3.6 |
Boto | 1.34.131 | 1.26 | 1.18 | 1.12 | N/A |
EMR DynamoDB 連接器 | 5.6.0 | 4.16.0 |
附錄 B:JDBC驅動程式升級
以下是JDBC驅動程式升級:
驅動程式 | JDBC 驅動程式 in AWS Glue 5.0 版 | JDBC 驅動程式 in AWS Glue 4.0 版 | JDBC 驅動程式 in AWS Glue 3.0 版 | JDBC 過去版本的驅動程式 AWS Glue 版本 |
---|---|---|---|---|
我的SQL | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 |
Microsoft SQL 伺服器 | 10.2.0 | 9.4.0 | 7.0.0 | 6.1.0 |
Oracle 資料庫 | 23.3.0.23.09 | 21.7 | 21.1 | 11.2 |
PostgreSQL | 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.16 |
redshift-jdbc41-1.2.12.1017 |
redshift-jdbc41-1.2.12.1017 |
SAP Hana | 2.20.17 | 2.17.12 | ||
Teradata | 20.00.00.33 | 20.00.00.06 |
附錄 C:連接器升級
以下是連接器升級:
驅動程式 | AWS Glue 5.0 版連接器 | 連接器 in AWS Glue 4.0 版 | 連接器 in AWS Glue 3.0 版 |
---|---|---|---|
EMR DynamoDB 連接器 | 5.6.0 | 4.16.0 | |
Amazon Redshift | 6.3.0 | 6.1.3 | |
OpenSearch | 1.2.0 | 1.0.1 | |
MongoDB | 10.4.0 | 10.0.4 | 3.0.0 |
Snowflake | 3.0.0 | 2.12.0 | |
Google BigQuery | 0.32.2 | 0.32.2 | |
AzureCosmos | 4.33.0 | 4.22.0 | |
AzureSQL | 1.3.0 | 1.3.0 | |
Vertica | 3.3.5 | 3.3.5 |
附錄 D:開啟資料表格式升級
以下是開放資料表格式升級:
OTF | AWS Glue 5.0 版連接器 | 連接器 in AWS Glue 4.0 版 | 連接器 in AWS Glue 3.0 版 |
---|---|---|---|
Hudi | 0.15.0 | 0.12.1 | 0.10.1 |
Delta Lake | 3.2.1 | 2.1.0 | 1.0.0 |
Iceberg | 1.6.1 | 1.0.0 | 0.13.1 |