共用方式為


無伺服器計算的最佳做法

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

將工作負載遷移至無伺服器計算

為了確保在共用無伺服器計算環境中隔離使用者程式碼,Azure Databricks 會利用 Lakeguard 將使用者程式碼與 Spark 引擎和其他使用者隔離。

因此,某些工作負載需要變更程式碼才能繼續處理無伺服器運算。 如需限制清單,請參閱無伺服器計算限制。

某些工作負載比其他工作負載更容易移轉。 符合下列需求的工作負載將是最容易移轉的工作負載:

  • 要存取的資料必須儲存在 Unity 目錄中。
  • 工作負載應該與 標準計算相容。
  • 工作負載應該與 Databricks Runtime 14.3 或更新版本相容。

若要測試工作負載是否可在無伺服器計算上運作,請在具有 標準 存取模式和 Databricks Runtime 14.3 或更新版本的傳統計算資源上執行它。 如果執行成功,工作負載就已準備好進行移轉。

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 執行環境版本,並手動管理升級以維持相容性。
  • 無伺服器方法:你針對環境版本撰寫程式碼,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 同盟?

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

支援的Spark組態

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

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

監視無伺服器計算的成本

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

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