Azure Synapse 運行時間

Azure Synapse 中的 Apache Spark 集區會使用運行時間,將 Azure Synapse 優化、套件和連接器等基本元件版本與特定 Apache Spark 版本系結在一起。 每個運行時間都會定期升級,以包含新的改進、功能和修補程式。 當您建立無伺服器 Apache Spark 集區時,請選取對應的 Apache Spark 版本。 以此為基礎,集區會預安裝相關聯的運行時間元件和套件。

執行時間具有下列優點:

  • 更快速的工作階段啟動時間
  • 測試與特定 Apache Spark 版本的相容性
  • 存取熱門、相容的連接器和開放原始碼套件

支援的 Azure Synapse 執行時間版本

提示

我們強烈建議主動將工作負載升級至最新版的運行時間,也就是 適用於Apache Spark 3.4的 Azure Synapse Runtime (GA))。 請參閱 Apache Spark 移轉指南

下表列出支援的 Azure Synapse Runtime 版本的運行時間名稱、Apache Spark 版本和發行日期。

運行時間名稱 發行日期 發行階段 終止支援公告日期 終止支援生效日期
適用於 Apache Spark 3.4 的 Azure Synapse Runtime 2023年11月21日 GA (截至2024年4月8日) Q2 2025 Q1 2026
適用於 Apache Spark 3.3 的 Azure Synapse 執行階段 2022 年 11 月 17 日 宣佈終止支援 2024 年 7 月 12 日 3/31/2025
適用於 Apache Spark 3.2 的 Azure Synapse 執行階段 2022年7月8日 已淘汰且即將停用 2023 年 7 月 8 日 2024 年 7 月 8 日
適用於 Apache Spark 3.1 的 Azure Synapse Runtime 2021 年 5 月 26 日 已淘汰且即將停用 2023 年 1 月 26 日 2024年1月26日
適用於 Apache Spark 2.4 的 Azure Synapse Runtime 2020 年 12 月 15 日 已淘汰且即將停用 2022 年 7 月 29 日 2023年9月29日

運行時間發行階段

如需 Apache Spark 生命週期和支持原則的完整運行時間,請參閱 適用於 Apache Spark 生命週期和支援性的 Synapse 運行時間

運行時間修補

Apache Spark 修補程式的 Azure Synapse 運行時間每月推出,其中包含 Apache Spark 核心引擎、語言環境、連接器和連結庫的 Bug、功能和安全性修正。

注意

  • 維護更新會自動套用至指定無伺服器 Apache Spark 集區的新會話。
  • 您應該在使用新的執行時間版本時測試並驗證應用程式是否正常執行。

重要

Log4j 1.2.x 安全性修補程式

開放原始碼 Log4j 連結庫 1.2.x 版有數個已知的 CVE(常見弱點和暴露),如下所述

在所有 Synapse Spark 集區運行時間上,我們已修補 Log4j 1.2.17 JAR 以減輕下列 CVE:CVE-2019-1751、 CVE-2020-9488、CVE-2021-4104、CVE-2022-23302、CVE-2022-2330、CVE-2022-23307

套用的修補程式的運作方式是移除下列叫用弱點所需的檔案:

  • org/apache/log4j/net/SocketServer.class
  • org/apache/log4j/net/SMTPAppender.class
  • org/apache/log4j/net/JMSAppender.class
  • org/apache/log4j/net/JMSSink.class
  • org/apache/log4j/jdbc/JDBCAppender.class
  • org/apache/log4j/chainsaw/*

雖然上述類別未用於 Synapse 中的預設 Log4j 組態中,但某些使用者應用程式仍可能相依於它。 如果您的應用程式需要使用這些類別,請使用連結庫管理,將安全的Log4j版本新增至Spark集區。 請勿使用Log4j 1.2.17版,因為它會重新引入弱點。

修補程式原則會根據 運行時間生命週期階段而有所不同:

  • 正式推出 (GA) 運行時間:在主要版本上不接收任何升級(也就是 3.x -> 4.x)。 只要沒有淘汰或回歸影響,就會升級次要版本(也就是 3.x -> 3.y)。

  • 預覽運行時間:除非絕對必要,否則不會升級主要版本。 次要版本 (3.x -> 3.y) 將會升級,以將最新功能新增至運行時間。

  • 長期支援 (LTS) 執行時間只會使用安全性修正進行修補。

  • 終止支援宣佈的運行時間不會有 Bug 和功能修正。 安全性修正會根據風險評估進行反移植。

Apache Spark 版本之間的移轉 - 支援

本指南提供結構化方法,讓使用者想要將 Apache Spark 工作負載的 Azure Synapse Runtime 從 2.4、3.1、3.2 或 3.3 升級為 最新版本,例如 3.4。 升級至最新版本可讓使用者受益於效能增強功能、新功能和改善的安全性措施。 請務必注意,由於不相容或已淘汰的功能,轉換至較高版本可能需要調整現有的Spark程式代碼。

步驟 1:評估和規劃

  • 評估相容性: 從檢閱 Apache Spark 移轉指南開始,以識別您目前 Spark 版本(2.4、3.1、3.2 或 3.3)與目標版本(例如 3.4)之間任何潛在的不相容、已淘汰的功能和新 API。
  • 分析程式代碼基底: 仔細檢查您的Spark程式代碼,以識別已淘汰或修改的API的使用。 請特別注意 SQL 查詢和使用者定義函數(UDF),這可能會受到升級的影響。

步驟 2:建立新的 Spark 集區以進行測試

  • 建立新的集區: 在 Azure Synapse 中,移至 [Spark 集區] 區段並設定新的 Spark 集區。 選取目標 Spark 版本(例如 3.4),並根據您的效能需求進行設定。
  • 設定 Spark 集區組態: 確定新 Spark 集區中的所有連結庫和相依性都會更新或取代為與 Spark 3.4 相容。

步驟 3:移轉及測試您的程式代碼

  • 移轉程式代碼: 更新您的程序代碼,以符合 Apache Spark 3.4 中新的或已修訂 API 的規範。 這牽涉到解決已被取代的函式,並採用正式 Apache Spark 檔中詳述的新功能。
  • 在開發環境中進行測試: 在 Azure Synapse 的開發環境中測試更新的程式代碼,而不是在本機測試。 在移至生產環境之前,此步驟對於識別並修正任何問題至關重要。
  • 部署和監視: 在開發環境中徹底測試和驗證之後,將您的應用程式部署至新的Spark 3.4集區。 監視應用程式是否有任何非預期的行為非常重要。 利用 Azure Synapse 中可用的監視工具來追蹤 Spark 應用程式的效能。

問題: 從 2.4 移轉至 3.X 時,應該採取哪些步驟?

答: 請參閱 Apache Spark 移轉指南

問題: 當我嘗試在連結庫時使用PowerShell Cmdlet升級Spark集區運行時間時,我收到錯誤。

答: 如果您的 Synapse 工作區中已安裝自定義連結庫,請勿使用 PowerShell Cmdlet。 請改為遵循下列步驟:

  1. 從頭開始重新建立 Spark 集區 3.3。
  2. 將目前的Spark集區3.3降級為3.1、移除附加的任何套件,然後再升級至3.3。

問題: 為什麼我無法升級至 3.4,而不需要重新建立新的 Spark 集區?

答: 這是不允許從UX,客戶可以使用 Azure PowerShell 來更新Spark版本。 請使用 「ForceApplySetting」,讓任何現有的叢集(含舊版)都已解除委任。

範例查詢︰

$_target_work_space = @("workspace1", "workspace2")

Get-AzSynapseWorkspace |
    ForEach-Object {
        if ($_target_work_space -contains $_.Name) {
            $_workspace_name = $_.Name
            Write-Host "Updating workspace: $($_workspace_name)"
            Get-AzSynapseSparkPool -WorkspaceName $_workspace_name |
            ForEach-Object {
                Write-Host "Updating Spark pool: $($_.Name)"
                Write-Host "Current Spark version: $($_.SparkVersion)"
        
                Update-AzSynapseSparkPool -WorkspaceName $_workspace_name -Name $_.Name -SparkVersion 3.4 -ForceApplySetting
              }
        }
    }