無伺服器計算的最佳做法

遵循這些建議,以最大化生產力、降低成本並提升可靠性,特別是在 Azure Databricks 上使用無伺服器運算來管理筆記本、工作與管線時。

將工作負載遷移到無伺服器運算

關於從經典運算遷移到無伺服器運算的逐步指引,包括前提條件、必要的程式碼變更、測試策略及分階段部署計畫,請參見 「從經典運算遷移至無伺服器運算」。

指定 Python 套件版本

遷移到無伺服器運算時,請將 Python 套件釘選到特定版本,以確保環境可重現。 如果您未指定版本,套件可能會根據無伺服器環境版本解析為不同的版本,這可能會增加延遲,因為需要安裝新套件。

例如,您的 requirements.txt 檔案應該包含特定的套件版本,如下所示:

numpy==2.2.2
pandas==2.2.3

為臨時檢視使用獨特名稱

無伺服器計算使用 Spark Connect,一種客戶端-伺服器架構,能延遲評估臨時視圖。 此行為與經典 Spark 架構不同,當程式碼重複使用相同暫存視圖名稱時,例如迴圈中,可能會造成錯誤。

為避免錯誤,請為程式碼中所有臨時視圖使用唯一名稱。

網路和連線能力

無伺服器計算功能不支援 VPC 對等連線,這是將傳統 Databricks 計算功能連接到您雲端帳戶中的資料來源的常見方法。 作為替代方案,使用 網路連接配置 來管理端點、防火牆及與外部服務的連接。

例如,你可以將外部 VPC 中的一組穩定出口 IP 位址加入允許列表,以啟用與 Azure Databricks 無伺服器計算的連線。 若要連接企業應用程式(如 Salesforce)或受管理資料庫(如 MySQL),請使用 Lakeflow Connect

要限制並監控無伺服器運算的出站流量,請為你的工作區設定出口控制。 請參閱 管理無伺服器輸出控制的網路原則

無伺服器環境版本

無伺服器運算使用環境版本,而非傳統的 Databricks 執行時版本。 這代表了你管理工作負載相容性的一種轉變:

  • Databricks 執行環境方法:你為工作負載選擇特定的 Databricks 執行環境版本,並手動管理升級以維持相容性。
  • Serverless 方法:你針對某個環境版本寫程式碼,Azure Databricks 獨立升級底層伺服器。

環境版本提供穩定的用戶端 API,確保您的工作負載保持相容性,而 Azure Databricks 則獨立提供效能提升、安全強化與錯誤修正,無需修改工作負載程式碼。

每個環境版本都包含更新的系統函式庫、功能及錯誤修正,同時維持對工作負載的向下相容性。 Azure Databricks 從發布日起支援每個環境版本三年,提供可預測的升級計畫生命週期。

若要為您的無伺服器工作負載選擇基底環境,請參見 選擇基底環境。 有關可用環境版本及其功能的詳細資訊,請參見 無伺服器環境版本

管理相依性

無伺服器運算不支援初始化腳本。 相反地,使用 無伺服器環境 來安裝和管理無伺服器工作負載的函式庫。 環境會快取已安裝的套件,以降低後續執行的啟動延遲。

若要使用私有儲存庫的函式庫,請在環境設定中設定預先簽署的 URL 以取得認證儲存庫存取。

選擇表演模式

Azure Databricks 無伺服器運算提供兩種效能模式,讓你根據工作負載類型來平衡速度與成本,具體如下:

  • 效能優化模式 (預設):最適合需要快速啟動時間的互動式工作負載。 Azure Databricks 會隨時準備一池溫熱的運算資源,以減少等待時間。
  • 標準模式:最適合自動化批次作業及能容忍 4 到 6 分鐘較長啟動時間的管線。 標準模式相較於效能優化模式可降低高達 70% 的成本。 標準模式可用於 Lakeflow Jobs 和 Lakeflow Spark 宣告式管線,但不適用於筆記本。

選擇最適合你工作量需求的模式。 對於啟動延遲不那麼關鍵的排程工作,標準模式通常能提供最佳的價值。 有關最新價格資訊,請參閱 Databricks 的定價頁面

優化串流工作負載

無伺服器運算支援結構化串流。Trigger.AvailableNow 不支援基於時間的觸發間隔。 關於支援的觸發器、程式碼範例及持續串流的替代方案,請參閱遷移指南中的 串流部分

使用 Trigger.AvailableNow時,每個觸發器會處理來源中所有可用資料,這可能導致比時間觸發更大的微批次。 為防止記憶體外錯誤並維持可預測的效能,請透過設定 maxFilesPerTriggermaxBytesPerTrigger來限制每微批次處理的資料量。

除錯無伺服器工作負載

Spark 介面在無伺服器運算中沒有提供。 相反地,請使用 查詢設定檔 來分析查詢效能並排除工作負載問題。 查詢設定檔提供詳細的執行資訊,並可從 Azure Databricks UI 的查詢歷史中存取。

從外部系統擷取資料

您可以用於導入的替代策略包括:

擷取替代選項

使用無伺服器計算時,您也可以使用下列功能來查詢您的資料,而不移動資料。

  • 如果您想要限制資料重複,或保證您查詢最新的可能資料,Databricks 建議使用 Delta Sharing。 請參閱什麼是 Delta Sharing?
  • 針對臨時報告與概念驗證,Lakehouse Federation 允許您直接從 Azure Databricks 查詢外部資料庫,無需移動資料,並由 Unity Catalog 管理。 請參閱 什麼是 Lakehouse 同盟?

嘗試其中一項或兩項功能,並查看它們是否符合您的查詢效能需求。

無支撐水槽

如果某個接收系統不支援作為無伺服器運算的直接寫入的目標,你可以使用 Unity Catalog Iceberg REST 目錄系統,讓該系統能直接從 Azure Databricks 資料表讀取資料。 例如,Snowflake 並非支援的無伺服器匯入器,但可設定為 Iceberg 用戶端來讀取由 Unity Catalog 管理的資料表。

此方法避免重複資料,並保留 Unity 目錄作為所有讀取的治理層。 有關支援的用戶端及設定步驟,請參閱 Apache Iceberg 用戶端的 Access Azure Databricks表

支援的Spark組態

為了在無伺服器運算上自動化 Spark 設定,Azure Databricks 已移除大多數手動設定 Spark 設定的支援。 若要檢視支援的 Spark 組態參數清單,請參閱 為無伺服器筆記本和作業設定 Spark 屬性

如果您設定不支援的 Spark 組態,在無伺服器計算上執行作業將會失敗。

監視無伺服器計算的成本

您可以使用多個功能來協助您監視無伺服器計算的成本:

  • 使用 無伺服器使用政策 來歸因於你的無伺服器計算使用量。
  • 使用系統資料表來建立儀表板、設定警示,以及執行臨機操作查詢。 請參閱 監視無伺服器計算的成本。
  • 在您的帳戶中設定預算警示。 請參閱建立和監控預算