Azure Synapse 中的 Apache Spark 集區會使用運行時間,將 Azure Synapse 優化、套件和連接器等基本元件版本與特定 Apache Spark 版本系結在一起。 每個運行時間都會定期升級,以包含新的改進、功能和修補程式。 當您建立無伺服器 Apache Spark 集區時,請選取對應的 Apache Spark 版本。 以此為基礎,集區會預安裝相關聯的運行時間元件和套件。
執行時間具有下列優點:
- 更快速的工作階段啟動時間
- 測試與特定 Apache Spark 版本的相容性
- 存取熱門、相容的連接器和開放原始碼套件
支援的 Azure Synapse 執行時間版本
提示
強烈建議您主動將工作負載升級至較新的執行階段 GA 版本,即 適用於 Apache Spark 3.5 (GA) 的 Azure Synapse 執行階段。 請參閱 Apache Spark 移轉指南。
下表列出支援的 Azure Synapse Runtime 版本的運行時間名稱、Apache Spark 版本和發行日期。
| 執行階段名稱 | 發行日期 | 發行階段 | 終止支援公告日期 | 終止支援生效日期 |
|---|---|---|---|---|
| 適用於 Apache Spark 3.5 的 Azure Synapse Runtime | 2025 年 10 月 13 日 | GA | 2026 年 10 月 31 日 | 2027 年 10 月 31 日 |
| 適用於 Apache Spark 3.4 的 Azure Synapse Runtime | 2023年11月21日 | EOSA | 2025年4月30日 | 2026 年第一季度 |
| 適用於 Apache Spark 3.3 的 Azure Synapse 執行階段 | 2022 年 11 月 17 日 | 已淘汰且即將停用 | 2024 年 7 月 12 日 | 2025 年 3 月 31 日 |
運行時間發行階段
如需 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.classorg/apache/log4j/net/SMTPAppender.classorg/apache/log4j/net/JMSAppender.classorg/apache/log4j/net/JMSSink.classorg/apache/log4j/jdbc/JDBCAppender.classorg/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 版本之間的移轉 - 支援
本指南為想將 Azure Synapse Runtime for Apache Spark 工作負載升級到 最新 GA 版本(如 3.5)的使用者提供結構化的方法。 升級至最新版本可讓使用者受益於效能增強功能、新功能和改善的安全性措施。 請務必注意,轉換至較高版本可能需要調整現有的Spark程式碼,因為不相容或已淘汰的功能。
步驟 1:評估和規劃
- 評估相容性: 首先檢視 Apache Spark 遷移指南,找出目前 Spark 版本與目標版本(例如 3.5)之間可能存在的不相容性、已棄用功能及新 API。
- 分析程式代碼基底: 仔細檢查您的Spark程式代碼,以識別已淘汰或修改的API的使用。 請特別注意 SQL 查詢和使用者定義函數(UDF),這可能會受到升級的影響。
步驟 2:建立新的 Spark 集區以進行測試
- 建立新的集區: 在 Azure Synapse 中,移至 [Spark 集區] 區段並設定新的 Spark 集區。 選擇目標 Spark 版本(例如 3.5),並依照你的效能需求來設定。
- 設定火花池配置: 確保你新 Spark 池中的所有函式庫和相依性都已更新或替換,以相容於 Spark 3.5。
步驟 3:移轉及測試您的程式代碼
- 遷移程式碼: 更新你的程式碼以符合 Apache Spark 3.5 中新版或修訂版的 API。 這牽涉到解決已被取代的函式,並採用正式 Apache Spark 檔中詳述的新功能。
- 在開發環境中進行測試: 在 Azure Synapse 的開發環境中測試更新的程式代碼,而不是在本機測試。 在移至生產環境之前,此步驟對於識別並修正任何問題至關重要。
- 部署與監控: 在開發環境中進行充分測試與驗證後,將您的應用程式部署到新的 Spark 3.5 池中。 請務必監視應用程式是否有任何非預期的行為。 利用 Azure Synapse 中可用的監視工具來追蹤 Spark 應用程式的效能。
問題: 應該採取哪些步驟移轉至 3.X?
答: 請參閱 Apache Spark 移轉指南。
問題: 當我嘗試在連結庫時使用PowerShell Cmdlet升級Spark集區運行時間時,我收到錯誤。
答: 如果您的 Synapse 工作區中已安裝自定義連結庫,請勿使用 PowerShell Cmdlet。 請改為遵循下列步驟:
- 從頭開始重新建立 Spark 集區。
- 先降級現有的 Spark Pool,移除所有附加的套件,然後再升級到 最新的 GA 版本,例如 3.5
鞫: 為什麼我無法升級到 3.5,除非重新建立新的 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.5 -ForceApplySetting
}
}
}