Databricks CLI 移轉

本文說明如何從 Databricks CLI 0.18 版或更新版本移轉至 Databricks CLI 0.205 版或更新版本。 Databricks CLI 0.205 版和更新版本處於 公開預覽狀態

為了簡潔起見,本文將 Databricks CLI 0.18 版和以下版本稱為「舊版」CLI,以及 Databricks CLI 0.205 版和更新版本作為「新增」CLI。

如需舊版和新 CLIS 的詳細資訊,請參閱:

卸載舊版 CLI

如果您已安裝舊版 CLI,而且想要將它卸載,請使用 pip (或 pip3,視 Python 版本而定)來執行 uninstall 命令,如下所示:

pip uninstall databricks-cli

安裝新的 CLI

若要瞭解如何安裝新的 CLI,請參閱 安裝或更新 Databricks CLI

確認 CLI 安裝

如果您不確定您是否使用新的 CLI,請遵循本節中的指示,視需要進行驗證和調整。 遵循這些指示之前,請務必結束任何 Python 虛擬環境、 conda 環境或類似的環境。

若要檢查 CLI 的預設安裝版本,請執行下列命令:

databricks -v

如果版本號碼不是您所預期的,請執行下列其中一項動作:

  • 如果您想要只使用一個 CLI 版本:卸載您不想再使用的所有舊版 CLI。 您可能需要更新作業的 , PATH 以便列出您想要使用之 CLI 剩餘版本的路徑。
  • 如果您想要繼續使用多個版本的 CLI:在您想要用於每個 CLI 和每次呼叫 CLI 的 CLI 版本前面加上完整路徑。
  • 如果您想要繼續使用多個版本的 CLI,但您不想繼續將您最常使用之 CLI 版本的完整路徑加上:請確定該版本的完整路徑會先列在操作系統的 PATH中。 請注意,您仍然必須前面加上操作系統 中未列出之 PATHCLI 版本的完整路徑。

若要更新作業系統的 PATH,請執行下列動作:

Macos 或 Linux

  1. 列出執行下列其中一個命令所安裝的路徑 databricks

    which -a databricks
    
    # Or:
    where databricks
    
  2. 取得您想要使用之安裝的路徑,而不需在每次呼叫 CLI 之前加上完整路徑。 如果您不確定這是哪一個路徑,請執行每個位置的完整路徑,後面接著 -v,例如:

    /usr/local/bin/databricks -v
    
  3. 若要將您想要先使用的路徑放在 中 PATH,請執行下列命令,並將 取代 /usr/local/bin 為您要使用的路徑。 請勿新增 databricks 至此路徑的結尾。 例如:

    export PATH="/usr/local/bin:$PATH"
    
  4. 若要確認已 PATH 針對目前的終端機會話正確設定 ,請執行 databricks ,然後 -v 檢查版本號碼:

    databricks -v
    
  5. PATH若要在每次重新啟動終端機時以這種方式設定 ,請將步驟 3 中的命令新增至殼層初始化檔案。 例如,針對 Zshell,此檔案通常位於 ~/.zshrc。 對於 Bash,此檔案通常位於 ~/.bashrc。 如需其他殼層,請參閱殼層提供者的檔。

  6. 更新殼層初始化檔案之後,您必須重新啟動終端機以套用更新 PATH 的值。

Windows

  1. 以滑鼠右鍵按下您想要使用的安裝 databricks ,而不需在每次呼叫 CLI 之前加上完整路徑。

  2. 按兩下 [ 開啟檔案位置]。

  3. 請注意 的路徑 databricks,例如 C:\Windows

  4. 在 [ 開始] 功能表上,搜尋 環境變數

  5. 按兩下 [編輯您帳戶的環境變數]。

  6. [用戶變數] <username> 區段中選取 [路徑] 變數

  7. 按一下 [編輯]

  8. 按一下新增

  9. 輸入您要新增的路徑,不含 databricks.exe (例如 )。C:\Windows

  10. 使用 [ 上移] 按鈕來移動您剛新增至列表開頭的路徑。

  11. 按一下 [確定]

  12. 若要確認 PATH 已正確設定 ,請開啟新的命令提示字元,然後執行 databricks-v,然後檢查版本號碼:

    databricks -v
    

使用其他驗證類型

舊版 CLI 和新的 CLI 都支援 Azure Databricks 個人存取令牌驗證。 不過,Databricks 建議您盡可能使用其他 Azure Databricks 驗證類型,只有新的 CLI 支援。

如果您必須使用 Azure Databricks 個人存取令牌驗證,Databricks 建議您使用與服務主體相關聯的令牌,而不是 Azure Databricks 帳戶或工作區使用者。 請參閱管理服務主體

新的 CLI 除了 Azure Databricks 個人存取令牌之外,還支援 Microsoft Entra ID 令牌。 這些額外的令牌較安全,因為它們通常會在一小時內到期,而 Azure Databricks 個人存取令牌可以從一天到無限期有效。 如果令牌不小心簽入其他人可以存取的版本控制系統,這特別重要。 此外,新的 CLI 可以在過期時自動重新整理這些額外的令牌,而重新整理 Azure Databricks 個人存取令牌是手動程式或難以自動化。

如需詳細資訊,請參閱 Databricks CLI 的驗證。

命令群組和命令比較

下表列出舊版 CLI 命令群組及其新 CLI 命令群組對等專案。 在 CLIS 之間存在顯著差異時,其他數據表會列出舊版 CLI 命令或選項,以及其新的 CLI 命令或選項對等專案。

命令群組

舊版命令群組 新增命令群組
cluster-policies cluster-policies. 所有命令名稱都相同。
clusters clusters. 所有命令名稱都相同。
configure configure. 請參閱 設定選項
fs fs. 請參閱 fs 命令
groups groups. 請參閱 群組命令
instance-pools instance-pools. 所有命令名稱都相同。
jobs jobs. 所有命令名稱都相同。
libraries libraries. 除了 之外,所有命令名稱都相同 list。 命令 list 已無法使用;請改用 all-cluster-statusescluster-status 命令。
pipelines pipelines. 請參閱 管線命令
repos repos. 所有命令名稱都相同。
runs jobs. 請參閱 執行命令
secrets secrets. 請參閱 秘密命令
stack 新 CLI 中無法使用。 Databricks 建議您改用 Databricks Terraform 提供者
tokens tokens. 請參閱 令牌命令
unity-catalog 各種。 請參閱 unity-catalog 命令群組
workspace workspace. 請參閱 工作區命令

configure 選項

舊版選項 新增選項
-o 舊版 CLI 會使用 -o OAuth 驗證。 新的 CLI 會重新用途 -o ,以指定 CLI 輸出是否為文字或 JSON 格式。 不適用於 Azure Databricks。
--oauth 不適用於 Azure Databricks。
-s--scope 不適用於 Azure Databricks。
-t--token -t--token (相同)
-f--token-file 新 CLI 中無法使用。
--host --host (相同)
--aad-token 當系統提示而不是 Azure Databricks 個人存取令牌時,請使用 --host 並指定 Microsoft Entra ID (先前稱為 Azure Active Directory) 令牌。
--insecure 新 CLI 中無法使用。
--jobs-api-version 新 CLI 中無法使用。 新的 CLI 只會使用作業 API 2.1。 若要呼叫舊版作業 API 2.0,請使用舊版 CLI,並參閱作業 CLI(舊版)。
--debug 如需在新 CLI 中偵錯和記錄,請參閱 偵錯模式
--profile --profile (相同) 或 -p
-h--help -h--help (相同)

fs 命令

舊版 CLI 中的所有 fs 命令在新 CLI 中都相同,但 fs mv 新 CLI 中無法使用。

舊版命令 新增命令
fs cat fs cat (相同)
fs cp fs cp (相同)
fs ls fs ls (相同)
fs mkdirs fs mkdir
fs mv 新 CLI 中無法使用。
fs rm fs rm (相同)

groups 命令

舊版命令 新增命令
groups add-member groups patch
groups create groups create (相同)
groups delete groups delete (相同)
groups list groups list (相同)
groups list-members groups list
groups list-parents groups list
groups remove-member groups patch

pipelines 命令

舊版命令 新增命令
pipelines create pipelines create (相同)
pipelines delete pipelines delete (相同)
pipelines deploy pipelines create
pipelines edit pipelines update
pipelines get pipelines get (相同)
pipelines list pipelines list-pipeline-eventspipelines list-pipelinespipelines list-updates
pipelines reset pipelines reset (相同)
pipelines start pipelines start update
pipelines stop pipelines stop (相同)
pipelines update pipelines update (相同)

runs 命令

舊版命令 新增命令
runs cancel jobs cancel-run
runs get jobs get-run
runs get-output jobs get-run-output
runs list jobs list-runs
runs submit jobs submit

secrets 命令

舊版命令 新增命令
secrets create-scope secrets create-scope (相同)
secrets delete secrets delete-secret
secrets delete-acl secrets delete-acl (相同)
secrets delete-scope secrets delete-scope (相同)
secrets get-acl secrets get-acl (相同)
secrets list secrets list-secrets
secrets list-acls secrets list-acls (相同)
secrets list-scopes secrets list-scopes (相同)
secrets put secrets put-secret
secrets put-acl secrets put-acl (相同)
secrets write secrets put-secret
secrets write-acl secrets put-acl

tokens 命令

舊版命令 新增命令
tokens create tokens create (相同)
tokens list tokens list (相同)
tokens revoke tokens delete

unity-catalog 命令群組

unity-catalog <command> 在舊版 CLI 中,只會 <command> 在新 CLI 中變成 。

舊版命令群組 新增命令群組
unity-catalog catalogs catalogs (相同但下降 unity-catalog
unity-catalog external-locations external-locations (相同但下降 unity-catalog
unity-catalog lineage 新 CLI 中無法使用。 請參閱 數據譜系 API
unity-catalog metastores metastores (相同但下降 unity-catalog
unity-catalog permissions grants
unity-catalog providers providers (相同但下降 unity-catalog
unity-catalog recipients recipients (相同但下降 unity-catalog
unity-catalog schemas schemas (相同但下降 unity-catalog
unity-catalog shares shares (相同但下降 unity-catalog
unity-catalog storage-credentials storage-credentials (相同但下降 unity-catalog
unity-catalog tables tables (相同但下降 unity-catalog

workspace 命令

舊版命令 新增命令
workspace delete workspace delete (相同)
workspace export workspace export (相同)
workspace export-dir workspace export
workspace import workspace import (相同)
workspace import-dir workspace import
workspace list workspace list (相同)
workspace ls workspace list
workspace mkdirs workspace mkdirs (相同)
workspace rm workspace delete

預設和位置自變數

大部分的新 CLI 命令至少有一個沒有隨附選項的預設自變數。 某些新的 CLI 命令有兩個或多個位置自變數,必須以特定順序指定,而且沒有隨附的選項。 這與舊版 CLI 不同,其中大部分的命令都需要為所有自變數指定選項。 例如,新 CLI 的 clusters get 命令會採用叢集標識碼作為預設自變數。 不過,舊版 CLI 的 clusers get 命令會要求您指定 --cluster-id 選項以及叢集標識碼。 例如:

針對舊版 CLI:

# This works with the legacy CLI.
databricks clusters get --cluster-id 1234-567890-a1b23c4d

# This does **not** work with the legacy CLI - "Error:
#   Missing None. One of ['cluster-id', 'cluster-name'] must be provided."
databricks clusters get 1234-567890-a1b23c4d

針對新的 CLI:

# This works with the new CLI.
databricks clusters get 1234-567890-a1b23c4d

# This does **not** work with the new CLI - "Error: unknown flag: --cluster-id"
databricks clusters get --cluster-id 1234-567890-a1b23c4d

另一個範例是,新 CLI 的 grants get 命令會採用兩個預設自變數:安全性實體類型,後面接著安全性實體的完整名稱。 不過,舊版 CLI 的 unity-catalog permissions get 命令會要求您指定 --<securable-type> 選項以及安全性實體的完整名稱。 例如:

針對舊版 CLI:

databricks unity-catalog permissions get --schema main.default

針對新的 CLI:

# This works with the new CLI.
databricks grants get schema main.default

# This does **not** work with the new CLI - "Error: unknown flag: --schema"
databricks grants get --schema main.default

偵錯模式

舊版 CLI 提供在 --debug 錯誤時顯示完整堆疊追蹤的選項。 對於新的 CLI, --debug 無法辨識選項。 請改用下列選項:

  • 使用 --log-file <path> 將記錄資訊寫入 中指定的 <path>檔案。 如果未提供此選項,則記錄資訊會輸出至 stderr。 若 --log-file 未指定 ,也不會指定 --log-level 任何寫入檔案的記錄檔資訊。
  • 使用 --log-format <type> 來指定所記錄資訊的格式。 <type> 可以是 text (如果未指定,則為預設值)或 json
  • 使用 --log-level <format> 來指定記錄的資訊層級。 允許的值為 disabled (預設值,如果未指定), trace、、 debuginfowarnerror

針對舊版 CLI,下列範例會顯示錯誤時的完整堆疊追蹤:

databricks fs ls / --debug

# Output:
#
# HTTP debugging enabled
# NoneType: None
# Error: The path / must start with "dbfs:/"

針對新的 CLI,下列範例會將完整堆疊追蹤記錄至目前工作目錄中名為 new-cli-errors.log 的檔案。 堆疊追蹤會以 JSON 格式寫入檔案:

databricks fs ls / --log-file new-cli-errors.log --log-format json --log-level trace

# Output:
#
# Error: expected dbfs path (with the dbfs:/ prefix): /
#
# (The full stack trace is also written to the new-cli-errors.log file.)

常見問題

本節列出從舊版移轉至新 CLI 的常見問題。

舊版 CLI 會發生什麼事?

舊版 CLI 仍可供使用,但未收到任何非重大更新。 舊 版 CLI 檔 會反映這一點。 Databricks 建議用戶儘快移轉至新的 CLI。

舊版 CLI 一直處於實驗狀態,免責聲明 Databricks 計劃沒有舊版 CLI 的新功能運作,而且舊版 CLI 不支援透過 Databricks 支援通道。

何時會淘汰舊版 CLI?

舊版 CLI 一直處於實驗狀態,免責聲明 Databricks 計劃沒有舊版 CLI 的新功能運作,而且舊版 CLI 不支援透過 Databricks 支援通道。

Databricks 尚未建立取代舊版 CLI 的日期或時程表。 不過,Databricks 建議用戶儘快移轉至新的 CLI。

何時會以正式推出的形式發行新的 CLI?

發行新 CLI 的發行日期或時程表,因為尚未建立 GA。 這取決於 Databricks 在公開預覽期間收到使用者的意見反應。

舊版和新 CLIS 之間的主要差異為何?

  • 舊版 CLI 已發行為 Python 套件。 新的 CLI 會以獨立可執行檔的形式發行,而且不需要安裝任何運行時間相依性。
  • 新的 CLI 已完整涵蓋 Databricks REST API。 舊版 CLI 不會。
  • 新的 CLI 以公開預覽的形式提供。 舊版 CLI 會維持在實驗狀態。

新的 CLI 是否與舊版 CLI 具有完整的功能同位?

新的 CLI 幾乎涵蓋舊版 CLI 的所有命令。 不過,新 CLI 明顯不存在的是 stacks 舊版 CLI 中的命令群組。 此外,一些舊版 CLI 命令群組,例如 unity-catalog ,並 runs 已重構為新 CLI 中的新命令群組。 如需移轉指引,請參閱本文稍早提供的資訊。

如何? 從舊版移轉至新 CLI?

如需移轉指引,請參閱本文稍早提供的資訊。 請注意,新的 CLI 不是舊版 CLI 的卸除取代專案,而且需要一些設定才能從舊版移至新的 CLI。

舊版和新 CLIS 的安裝是否可以存在於同一部電腦上?

是。 舊版和新 CLIS 的安裝可以存在於同一部電腦上,但必須位於不同的目錄中。 因為可執行檔都命名 databricks為 ,因此您必須設定計算機的 PATH,以控制預設執行的可執行檔。 如果您想要執行新的 CLI,但不知怎麼地不小心執行舊版 CLI,根據預設,舊版 CLI 會使用相同的自變數執行新的 CLI,並顯示下列警告訊息:

Databricks CLI <new-version-number> found at <new-path>
Your current PATH prefers running CLI <old-version-number> at <old-path>

Because both are installed and available in PATH,
I assume you are trying to run the newer version.

If you want to disable this behavior you can set DATABRICKS_CLI_DO_NOT_EXECUTE_NEWER_VERSION=1.

Executing CLI <new-version-number>...
-------------------------------------
Databricks CLI <new-version-number>

如上述警告訊息所示,您可以將環境變數設定 DATABRICKS_CLI_DO_NOT_EXECUTE_NEWER_VERSION1 來停用此行為,並改為執行舊版 CLI。

取得協助

若要取得從舊版 CLI 移轉至新 CLI 的說明,請參閱下列資源: