設定管線的環境版本

Important

Lakeflow 管線的環境版本目前處於 公開預覽階段。

環境版本會固定 Python 語言版本及預先安裝的 Python 函式庫,供你的管線 Python 程式碼使用。 你在管線中加入的任何外部依賴,都是疊加在這個基礎之上。

環境版本會將管線的 Python 執行階段,與您的管線執行所在的 Databricks Runtime 版本解耦。 在環境版本設定期間,Databricks 執行時的升級不會改變你的 Python 語言版本或預裝函式庫版本。 Python 執行環境也與使用相同環境版本的無伺服器工作和筆記本相容。 欲查詢 Lakeflow 管線的最新 Databricks 執行時版本,請參閱 Lakeflow 管線的發布說明及版本升級流程

Databricks 會自動將符合資格的管線遷移到環境版本。 請參見 自動遷移

Important

有環境版本的管線會透過 Spark Connect 執行 Python 程式碼,這可能會改變部分管線程式碼的行為。 欲了解完整的限制與行為變更,請參閱 環境版本相容性

Requirements

環境版本有以下要求:

  • 管線必須使用 Unity Catalog。 不支援 Hive Metastore 管道。

支援的環境版本

Lakeflow pipelines 支援環境 版本 34 ,適用於無伺服器與經典運算。 關於Python語言版本及各版本中預裝的Python函式庫完整清單,請參見 environment 版本參考

自動遷移

Databricks 會自動將符合資格的管線遷移到環境版本。 遷移發生在管線下一次更新時,無需手動步驟,並包含以下保障措施:

  • 遷移前會檢查行為。 Databricks 會掃描你的管線,找出在 Spark Connect 下會有不同行為的程式碼模式,並比較遷移前後的管線輸出計畫。 請參閱 環境版本相容性
  • 遷移失敗時會自動回復。 若遷移更新因任何原因失敗,會在寫 入資料前停止,流水線會在下一次更新時自動回復到先前的執行時。 不需要採取行動。
  • 你的明確設定總是被尊重。 如果你自己設定 environment_version ,Databricks 永遠不會覆蓋它。

一旦管線成功遷移,之後就會在環境版本上運行。 你可以在管線設定中看到被選中的版本 GetPipeline API 回應和 runtime_details 事件日誌

哪些不會自動遷移

若以下任何條件適用,管線不會自動遷移:

未被遷移的管線會自動在先前的 Python 執行環境上繼續運行,沒有任何變動。 一旦管線符合資格,你就可以 自己啟用環境版本

自己啟用環境版本

自動遷移涵蓋大多數管線。 你也可以透過管線編輯器介面、管線 REST API 或 宣告式自動化套件,明確設定環境版本,例如提前遷移或釘選特定版本。

在你明確啟用環境版本之前, 先確認你的管線是否相容於 Spark Connect。 如果 Databricks 偵測到啟用該版本會改變管線的行為,更新會在寫入任何資料之前失敗,並顯示指出需要解決之差異的錯誤訊息。

透過使用者介面啟用

  1. 從管線編輯器中,按一下 設定。
  2. 管線環境中,選擇 鉛筆圖示。編輯環境
  3. 從下拉選單中選擇環境版本。
  4. 儲存管線設定。

管線環境 區塊新增的外部相依性會疊加在所選環境版本所包含的函式庫之上。 請參見 管理管線 的 Python 相依關係。

透過 API 啟用

Pipelines REST API 在建立和更新管線時接受 environment 區塊。 工作 區必須啟用個人存取權杖認證。

若要建立包含環境版本的管線:

curl --request POST \
  --url 'https://<workspace-host>/api/2.0/pipelines' \
  --header 'Authorization: Bearer <personal-access-token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "name": "<pipeline-name>",
    "catalog": "<catalog>",
    "schema": "<schema>",
    "channel": "CURRENT",
    "environment": {
      "environment_version": "4",
      "dependencies": [
        "simplejson==3.19.*"
      ]
    }
  }'

若要在現有管線上設定環境版本,請搭配 environment 傳送相同的 PUT /api/2.0/pipelines/<pipeline-id> 區塊。

透過宣告式自動化套件啟用

當你使用 Declarative Automation Bundles 建立管線時,可以在管線的 YAML 定義中設定環境版本。

  1. 請確保您的 Databricks CLI 是 v0.294.0 或更新版本。 如果沒有,請依照 安裝指南升級。
  2. 按照 管線套件教學來建立一個套件。
  3. 在你的套件組合中找到管線 YAML,通常為 <bundle-folder>/resources/<pipeline_name>_pipeline.yml
  4. 在 YAML 管線中設定 environment_version and dependencies 欄位:
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      catalog: ${var.catalog}
      schema: ${var.schema}
      root_path: '../src/my_pipeline'
      libraries:
        - glob:
            include: ../src/my_pipeline/transformations/**
      environment:
        environment_version: 4
        dependencies:
          - --editable ${workspace.file_path}

請檢查管線上的環境版本

若要檢查管線正在執行哪個環境版本,不論該版本是由你明確指定,還是 Databricks 在 自動遷移期間選取的:

  • 使用者介面:打開管線設定,檢查 管線環境 區塊,或檢查欄位的 environment.environment_version JSON 窗格。
  • API:呼叫 GET /api/2.0/pipelines/<pipeline-id>,並在回應中尋找 environment.environment_version。 這顯示你明確設定的版本;若要查看自動遷移選中的版本,請使用下方事件日誌。
  • 事件日誌:檢查事件, runtime_details 該事件會報告用於更新的環境版本。 請參閱 runtime_details 事件詳細資料

停用或回復舊版環境版本

你無需手動回復自動移轉。 失敗的遷移會在下一次更新時自動還原。 當環境版本被移除時,管線會回復到先前的 Python 執行時配置。 如果發生任何意外狀況,請聯絡 Azure Databricks 客服。

其他資源

  • 環境版本相容 性 — 限制、行為變更、相容性掃描及自動遷移。
  • 管理管線的Python相依關係——將外部Python相依性疊加在環境版本之上。