警告
已宣佈Microsoft Fabric Runtime 1.2 的支持結束。 Microsoft Fabric Runtime 1.2 將於 2026 年 3 月 31 日被棄用。 強烈建議您將網狀架構工作區和環境升級為使用 Runtime 1.3(Apache Spark 3.5 和 Delta Lake 3.2)。
Microsoft Fabric 執行階段是以 Apache Spark 為基礎的 Azure 整合平臺,可執行和管理資料工程和資料科學體驗。 本文件涵蓋 Runtime 1.2 元件和版本。
Runtime 1.2 的主要元件包括:
- Apache Spark 3.4.1
- 操作系統:Mariner 2.0
- Java:11
- Scala:2.12.17
- Python 3.10
- Delta Lake:2.4.0
- R:4.2.2
提示
請一律針對目前為 Runtime 1.3 的生產工作負載使用最新的 GA 運行時間版本。
Microsoft Fabric Runtime 1.2 隨附預設層級套件的集合,包括完整的 Anaconda 安裝,以及 Java/Scala、Python 和 R 的常用連結庫。在 Microsoft Fabric 平臺中使用筆記本或作業時,會自動包含這些連結庫。 如需完整程式庫清單,請參閱說明文件。 Microsoft Fabric 會定期推出 Runtime 1.2 的維護更新,並提供錯誤修正、效能增強和安全性修補程式。 保持最新狀態可確保資料處理工作的最佳效能和可靠性。
Spark 3.4.1 版的新功能和改善
Apache Spark 3.4.0 是 3.x 行中的第五個版本。 此版本由開放原始碼社群推動,已解決超過 2,600 張 Jira 票證。 它引進適用於 Spark Connect的 Python 用戶端,使用異步進度追蹤和 Python 具狀態處理來增強結構化串流。 它透過 NumPy 輸入支援擴充 Pandas API 涵蓋範圍,透過 ANSI 合規性和新的內建函式,簡化從傳統資料倉儲移轉。 它也會使用儲存體分析來改善開發生產力和偵錯能力。 此外,Runtime 1.2 是以 Apache Spark 3.4.1 為基礎,維護版本著重於穩定性修正。
重點摘要
流覽 Spark 3.4.0 和 Spark 3.4.1,以閱讀特定 Apache Spark 版本的完整版本資訊。
新的自訂查詢最佳化
Spark 中的並行寫入支援
在使用 SQL 插入查詢對同一資料表進行平行資料插入時,遇到帶有「操作失敗:指定路徑不存在」訊息的 404 錯誤是常見的問題。 此錯誤可能會導致資料遺失。 我們的新功能「檔案輸出認可者演算法」可解決此問題,讓客戶能夠順暢地執行平行資料插入。
若要存取這項功能,請啟用 spark.sql.enable.concurrentWrites 功能旗標,預設從 Runtime 1.2 (Spark 3.4) 開始啟用此功能。 雖然此功能也適用於其他 Spark 3 版本,但預設不會啟用此功能。 此功能不支援平行執行 INSERT OVERWRITE 查詢,其中每個並行作業都會動態覆寫相同資料表不同分割區上的資料。 為此,Spark 提供替代功能,其可藉由 spark.sql.sources.partitionOverwriteMode 將設定設定設定為 動態來啟用。
智能讀取,略過失敗作業的檔案
在目前的 Spark 認可項系統中,當插入資料表作業失敗但某些工作成功時,成功工作所產生的檔案會與失敗作業中的檔案並存。 這種共存可能會造成使用者混淆,因為區分屬於成功和失敗作業的檔案會變得困難。 此外,當某個作業從資料表讀取,而另一個作業同時將資料插入同一個資料表時,讀取作業可能會存取未認可的資料。 如果寫入作業失敗,讀取作業可能會處理不正確的資料。
標誌 spark.sql.auto.cleanup.enabled 用於控制我們的新功能,用於解決此問題。 啟用後,Spark 在執行 spark.read 或從資料表中選擇查詢時,會自動略過讀取尚未提交的檔案。 啟用此功能之前寫入的檔案會如往常一樣繼續讀取。
以下是可見的變更:
- 所有檔案現在都會在其
tid-{jobID}檔名中包含標識碼。 - 通常在作業順利完成後會在輸出位置建立
_success標記,而這次則產生了新的_committed_{jobID}標記。 此標記會將成功的作業標識碼與特定檔名產生關聯。 - 我們引進了新的 SQL 命令,使用者可以定期執行以管理儲存體並清除未認可的檔案。 此命令的語法如下:
- 若要清除特定目錄:
CLEANUP ('/path/to/dir') [RETAIN number HOURS]; - 若要清除特定資料表:
CLEANUP [db_name.]table_name [RETAIN number HOURS];在此語法中,path/to/dir代表需要清除的位置 URI,而number是代表保留期限的雙類型值。 預設的保留期限設定為七天。
- 若要清除特定目錄:
- 我們引進了稱為
spark.sql.deleteUncommittedFilesWhileListing的新組態選項,預設會設定為false。 啟用此選項會導致在讀取期間自動刪除未認可的檔案,但此案例可能會降低讀取作業的速度。 建議在叢集閒置時手動執行清除命令,而不是啟用此旗標。
從 Runtime 1.1 移轉至 Runtime 1.2 的移轉指南
從 Apache Spark 3.3 提供電源的 Runtime 1.1 移轉至 Apache Spark 3.4 所提供的 Runtime 1.2 時,請檢閱 官方移轉指南。
Delta Lake 2.4 的新功能和改善
Delta Lake 是一個開放原始碼專案,可讓您在資料湖之上組建 Lakehouse 架構。 Delta Lake 在現有的資料湖之上提供 ACID 交易、具擴展性的中繼資料處理,並統一串流和批次資料處理。
具體而言,Delta Lake 提供:
- Spark 上的 ACID 交易 :可串行化的隔離等級可確保讀取器永遠不會看到不一致的資料。
- 可擴展的中繼資料處理:利用 Spark 的分散式處理能力,輕鬆處理 PB 級資料表中的所有中繼資料與數十億個檔案。
- 串流和批次處理的統一:Delta Lake 中的資料表同時作為批次表,亦是串流的來源和接收器。 串流資料攝取、批次歷史回填、互動式查詢皆可立即使用。
- 架構強制執行:自動處理架構變化,以避免在擷取期間插入不正確的記錄。
- 時間旅行:資料版本控制可啟用復原、完整歷史稽核記錄,以及可再現的機器學習實驗。
- Upserts 和 deletes:支持合併、更新和刪除等工作,以實現複雜的使用案例,如變更資料擷取、緩慢變更維度 (SCD) 作業、串流插入更新等。
閱讀 Delta Lake 2.4 發行說明 的完整內容。
Java、Scala、Python 連結庫的預設層級套件
如需 Java、Scala、Python 及其各自版本之所有預設層級套件的清單,請參閱 版本資訊。
相關內容
- 閱讀有關 Fabric 中的 Apache Spark 執行階段—概述、版本管理、多執行階段支援及升級 Delta Lake 協定的資訊。