Share via


Fabric 中的 Apache Spark 運行時間

Microsoft Fabric Runtime 是以 Apache Spark 為基礎的 Azure 整合平臺,可執行和管理數據工程和數據科學體驗。 它會結合內部和開放原始碼來源的重要元件,為客戶提供完整的解決方案。 為了簡單起見,我們將 Apache Spark 所提供的 Microsoft Fabric 運行時間稱為 Fabric 運行時間。

Fabric 運行時間的主要元件:

  • Apache Spark - 功能強大的開放原始碼分散式運算連結庫,可進行大規模的數據處理和分析工作。 Apache Spark 為數據工程和數據科學體驗提供多功能且高效能的平臺。

  • Delta Lake - 開放原始碼儲存層,可將 ACID 交易和其他數據可靠性功能帶入 Apache Spark。 Delta Lake 已整合在 Fabric 運行時間內,可增強數據處理功能,並確保跨多個並行作業的數據一致性。

  • Java/Scala、Python 和 R 的預設層級套件 - 支援各種程式設計語言和環境的套件。 這些套件會自動安裝並設定,讓開發人員套用其慣用的程式設計語言來進行數據處理工作。

  • Microsoft Fabric 運行時間是以健全的開放原始碼操作系統為基礎所建置,可確保與各種硬體組態和系統需求相容。

在下方,您可以針對 Microsoft Fabric 平臺內的 Runtime 1.1 和 Runtime 1.2,找到完整的重要元件比較,包括 Apache Spark 版本、支援的操作系統、Java、Scala、Python、Delta Lake 和 R。

Runtime 1.1 Runtime 1.2 Runtime 1.3
Apache Spark 3.3.1 3.4.1 3.5.0
作業系統 Ubuntu 18.04 Mariner 2.0 Mariner 2.0
Java 8 11 11
Scala 2.12.15 2.12.17 2.12.17
Python 3.10 3.10 3.11
Delta Lake 2.2.0 2.4.0 3.1
R 4.2.2 4.2.2 4.3.3

請流覽 Runtime 1.1Runtime 1.2Runtime 1.3 ,以探索特定運行時間版本的詳細數據、新功能、改進和移轉案例。

網狀架構優化

在 Microsoft Fabric 中,Spark 引擎和 Delta Lake 實作都會納入平臺特定的優化和功能。 這些功能的設計目的是在平臺中使用原生整合。 請務必注意,您可以停用所有這些功能,以達到標準 Spark 和 Delta Lake 功能。 Apache Spark 的 Fabric 運行時間包含:

  • Apache Spark 的完整開放原始碼版本。
  • 近 100 個內建、相異查詢效能增強的集合。 這些增強功能包括數據分割快取等功能(讓 FileSystem 數據分割快取減少中繼存放區呼叫),以及交叉聯結至純量子查詢的投影。
  • 內建智慧型快取。

在 Apache Spark 和 Delta Lake 的 Fabric 運行時間中,有兩個主要用途的原生寫入器功能:

  1. 它們為撰寫工作負載提供不同的效能,以優化寫入程式。
  2. 它們預設為 Delta Parquet 檔案的 V 順序優化。 Delta Lake V 順序優化對於在所有網狀架構引擎上提供絕佳的讀取效能至關重要。 若要深入瞭解其運作方式及管理方式,請參閱 Delta Lake 數據表優化和 V-Order 上的專用文章。

多個運行時間支援

Fabric 支援多個運行時間,讓用戶能夠彈性地在它們之間順暢地切換,將不相容或中斷的風險降到最低。

根據預設,所有新的工作區都會使用目前 為 Runtime 1.2 的最新運行時間版本。

若要變更工作區層級的運行時間版本,請移至工作區 設定 > 資料工程師/Science > Spark 計算>工作區層級預設值,然後從可用的選項中選取所需的運行時間。

進行這項變更之後,工作區內的所有系統建立專案,包括 Lakehouses、SDK 和 Notebooks,將會使用從下一個 Spark 會話開始的新選取工作區層級運行時間版本運作。 如果您目前使用筆記本搭配作業或任何lakehouse相關活動的現有工作階段,該Spark會話會繼續如前所述。 不過,從下一個會話或作業開始,將會套用選取的運行時間版本。

顯示如何變更運行時間版本的 Gif。

Spark 設定 上的運行時間變更後果

一般而言,我們的目標是移轉所有Spark設定。 不過,如果我們識別Spark設定與運行時間 B 不相容,我們會發出警告訊息,避免實作設定。

Spark 設定 運行時間變更。

連結庫管理上運行時間變更的後果

一般而言,我們的方法是將所有連結庫從運行時間 A 遷移至運行時間 B,包括公用和自定義運行時間。 如果 Python 和 R 版本保持不變,連結庫應該正常運作。 不過,對於 Jar,由於相依性變更,以及 Scala、Java、Spark 和作業系統中的變更等其他因素,它們可能無法運作。

用戶負責更新或取代任何不適用於運行時間 B 的連結庫。如果發生衝突,這表示運行時間 B 包含原本在運行時間 A 中定義的連結庫,我們的連結庫管理系統會嘗試根據使用者的設定,為運行時間 B 建立必要的相依性。 不過,如果發生衝突,建置程式將會失敗。 在錯誤記錄檔中,使用者可以查看哪些連結庫造成衝突,並調整其版本或規格。

連結庫管理運行時間變更。

升級 Delta Lake 通訊協定

Delta Lake 功能一律與回溯相容,確保以較低 Delta Lake 版本建立的數據表可以順暢地與較高版本互動。 不過,啟用特定功能時(例如,使用 delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) 方法,可能會危害與較低 Delta Lake 版本的轉送相容性。 在這種情況下,必須修改參考升級數據表的工作負載,以符合維護相容性的 Delta Lake 版本。

每個 Delta 資料表都會與通訊協定規格相關聯,並定義其支援的功能。 與數據表互動的應用程式,無論是用於讀取或寫入,都依賴此通訊協定規格來判斷它們是否與數據表的功能集相容。 如果應用程式無法處理資料表通訊協定中所列出的功能,則無法讀取或寫入該數據表。

通訊協定規格分為兩個不同的元件:讀取通訊協定和寫入通訊協定。 請流覽「Delta Lake 如何管理功能相容性?」頁面,以閱讀其詳細數據。

使用 upgradeTableProtocol 方法時,顯示立即警告的 GIF。

用戶可以在 PySpark 環境中以及 Spark SQL 和 Scala 中執行命令 delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) 。 此命令可讓他們在 Delta 數據表上起始更新。

請務必注意,在執行此升級時,使用者會收到警告,指出升級 Delta 通訊協定版本是無法執行的程式。 這表示一旦執行更新,就無法復原。

通訊協定版本升級可能會影響現有 Delta Lake 數據表讀取器、寫入器或兩者的相容性。 因此,建議您謹慎行事,並在必要時升級通訊協定版本,例如在 Delta Lake 中採用新功能時。

顯示升級 Delta Lake 通訊協定時警告的螢幕快照。

此外,用戶應該使用新的通訊協定版本來確認所有目前和未來的生產工作負載和程式都與 Delta Lake 數據表相容,以確保順暢轉換,並防止任何潛在的中斷。

Delta 2.2 與 Delta 2.4 變更

在最新的 Fabric 執行時間版本 1.3Fabric 執行時間 1.2 版中,預設資料表格式 (spark.sql.sources.default) 現在是 delta。 在舊版 Fabric 執行時間、1.1 版和所有包含 Spark 3.3 或以下的 Apache Spark Synapse Runtime 上,預設數據表格式已定義為 parquet。 如需 Azure Synapse Analytics 與 Microsoft Fabric 之間的差異,請參閱 Apache Spark 設定詳細 數據。

每當省略數據表類型時,所有使用 Spark SQL、PySpark、Scala Spark 和 Spark R 建立的數據表預設都會建立數據表 delta 。 如果腳本明確設定數據表格式,則會加以遵守。 Spark 建立數據表命令中的命令 USING DELTA 會變成備援。

應該修訂預期或假設 parquet 資料表格式的腳本。 Delta 數據表不支援下列命令:

  • ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
  • ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
  • ALTER TABLE DROP PARTITION
  • ALTER TABLE RECOVER PARTITIONS
  • ALTER TABLE SET SERDEPROPERTIES
  • LOAD DATA
  • INSERT OVERWRITE DIRECTORY
  • SHOW CREATE TABLE
  • CREATE TABLE LIKE

版本控制

我們的運行時間版本編號,雖然與語意版本設定密切相關,但遵循稍微不同的方法。 運行時間主要版本會對應至 Apache Spark 主要版本。 因此,運行時間 1 會對應至 Spark 第 3 版。 同樣地,即將推出的 Runtime 2 會與 Spark 4.0 一致。 請務必注意,在目前的運行時間、運行時間 1.1 和運行時間 1.2 之間,可能會發生變更,包括新增或移除不同的連結庫。 此外,我們的平臺提供 連結庫管理功能 ,可讓使用者安裝任何所需的連結庫。