開始
用戶指南
管理指南
參考指南
資源
2022年10月07日更新
給我們反饋
你可以調用磚REST API使用Python代碼自動化Databricks,而不是使用非Python命令行工具,如旋度或API客戶端,如Postman。要用Python調用Databricks REST API,可以使用磚CLI的包作為一個圖書館。這個庫是用Python編寫的,可以通過緊密建模Databricks REST API請求和響應有效負載的Python類調用Databricks REST API。
旋度
請注意
直接使用Python請求圖書館是另一種方法。但是,您需要在較低的級別上工作,手動提供必要的頭文件、處理錯誤和其他相關的低級編碼任務。有關更多信息,請參見使用Python調用Databricks REST API。
實驗
這個Databricks CLI正在積極開發中,並作為一個實驗客戶端。這意味著接口仍然會發生變化。
Databricks命令行支持調用以下Databricks REST api:
集群策略API 2.0
集群API 2.0
DBFS API 2.0
組API 2.0
實例池API 2.0
Jobs API 2.1、2.0
庫API 2.0
Delta Live Tables API 2.0
回購API 2.0
秘密API 2.0
令牌API 2.0
Unity Catalog API 2.1
工作區API 2.0
Databricks CLI不支持調用以下Databricks REST api:
賬戶API 2.0
Databricks SQL查詢和儀表板API 2.0
Databricks SQL查詢曆史API 2.0
Databricks SQL倉庫API 2.0
Git憑據API 2.0
Global Init Scripts API 2.0
實例概要API 2.0
IP訪問列表API 2.0
MLflow API 2.0
權限API 2.0
SCIM API 2.0
令牌管理API 2.0
API 1.2
詳細信息請參見Databricks REST API參考。
Python版本3.6或以上。檢查是否安裝了Python,如果安裝了,請運行python——版本從您的PowerShell終端。安裝Python,如果它還沒有安裝。
python——版本
python的版本
一些安裝的Python需要python3而不是python。如果是這樣,取代python與python3在這篇文章。
python3
python
的磚CLI。執行命令,查看Databricks命令行是否安裝,如果安裝,則查看安裝版本磚——版本。安裝Databricks命令行,執行皮普安裝databricks-cli或python- m皮普安裝databricks-cli。
磚——版本
皮普安裝databricks-cli
python- m皮普安裝databricks-cli
#檢查是否安裝了Databricks命令行,如果安裝了,檢查安裝的版本。磚,版本#安裝Databricks命令行。pip安裝databricks-cli#還是……Python -m PIP install databicks -cli
一些設施皮普需要pip3而不是皮普。如果是這樣,取代皮普與pip3在這篇文章。
皮普
pip3
你的工作區實例URL例如,https://dbc-a1b2345c-d6e7.cloud.www.eheci.com。
https://dbc-a1b2345c-d6e7.cloud.www.eheci.com
Databricks個人訪問令牌。要創建個人訪問令牌,請參見生成個人訪問令牌。另請參閱管理個人訪問令牌。
要通過Databricks CLI包庫使用Databricks REST API進行身份驗證,你的Python代碼至少需要兩條信息:
你的工作空間實例URL。
你的Databricks個人訪問令牌。
為了代碼的模塊化、可移植性和安全性,不應該將這些信息硬編碼到Python代碼中。相反,你應該在運行時從一個安全的位置檢索這些信息。例如,本文中的代碼使用了以下環境變量:
DATABRICKS_HOST,它表示您的工作區實例URL。
DATABRICKS_HOST
DATABRICKS_TOKEN,它代表您的Databricks個人訪問令牌。
DATABRICKS_TOKEN
這些環境變量可以設置如下:
僅為當前終端會話設置環境變量,執行以下命令。要為所有終端會話設置環境變量,請在shell的啟動文件中輸入以下命令,然後重新啟動終端。用您自己的值替換這裏的示例值。
出口DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”出口DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
使用實例為當前PowerShell會話設置環境變量。用您自己的值替換這裏的示例值。
集DATABRICKS_HOST=“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”集DATABRICKS_TOKEN=“dapi1234567890b2cd34ef5a67bc8de90fa12b”
要為所有命令提示符會話設置環境變量,請運行以下命令,然後重新啟動命令提示符。用您自己的值替換這裏的示例值。
對於setxDATABRICKS_HOST“https://dbc-a1b2345c-d6e78.cloud.www.eheci.com”對於setxDATABRICKS_TOKEN“dapi1234567890b2cd34ef5a67bc8de90fa12b”
在Python代碼文件中,導入操作係統庫,使您的代碼能夠獲得環境變量值。
進口操作係統
導入ApiClient類的databricks_cli.sdk.api_client模塊,使您的代碼能夠使用Databricks REST API進行身份驗證。
ApiClient
從databricks_cli.sdk.api_client進口ApiClient
根據需要導入額外的類,以使您的代碼在身份驗證後能夠調用Databricks REST API,如下所示。
REST API
進口語句
進口
從databricks_cli.cluster_policies.api進口ClusterPolicyApi
從databricks_cli.clusters.api進口ClusterApi
從databricks_cli.dbfs.api進口DbfsApi
從databricks_cli.dbfs.dbfs_path進口DbfsPath
從databricks_cli.groups.api進口GroupsApi
從databricks_cli.instance_pools.api進口InstancePoolsApi
喬布斯API 2.1
從databricks_cli.jobs.api進口JobsApi(1)
從databricks_cli.jobs.api進口JobsApi
從databricks_cli.runs.api進口RunsApi(2)
從databricks_cli.runs.api進口RunsApi
從databricks_cli.libraries.api進口LibrariesApi
從databricks_cli.pipelines.api進口PipelinesApi,LibraryObject
從databricks_cli.repos.api進口ReposApi
從databricks_cli.secrets.api進口SecretApi
從databricks_cli.tokens.api進口TokensApi
從databricks_cli.unity_catalog.api進口UnityCatalogApi
從databricks_cli.workspace.api進口WorkspaceApi
(1)僅用於處理作業。
(2)僅用於作業運行。
例如,要調用Clusters API 2.0,請添加以下代碼:
使用ApiClient類使用Databricks REST API進行身份驗證。使用操作係統圖書館的采用函數獲取工作區實例URL和Databricks個人訪問令牌值。下麵的例子使用變量名api_client的實例表示ApiClient類。
操作係統
采用
api_client
api_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))
初始化類的實例,在認證後調用Databricks REST API,例如:
建議的類初始化語句
cluster_policies_api=ClusterPolicyApi (api_client)
clusters_api=ClusterApi (api_client)
dbfs_api=DbfsApi (api_client)
groups_api=GroupsApi (api_client)
instance_pools_api=InstancePoolsApi (api_client)
jobs_api=JobsApi (api_client)(1)
jobs_api=JobsApi (api_client)
runs_api=RunsApi (api_client)(2)
runs_api=RunsApi (api_client)
libraries_api=LibrariesApi (api_client)
pipelines_api=PipelinesApi (api_client)
repos_api=ReposApi (api_client)
secrets_api=SecretApi (api_client)
tokens_api=TokensApi (api_client)
unity_catalog_api=UnityCatalogApi (api_client)
workspace_api=WorkspaceApi (api_client)
例如,要初始化群集API 2.0的一個實例,添加以下代碼:
clusters_api=ClusterApi(api_client)
根據需要調用對應於Databricks REST API操作的類方法。要查找該方法的調用簽名和使用說明,請參閱Databricks CLI源代碼中以下模塊的文檔。
模塊的文檔
databricks_cli.cluster_policies.api
databricks_cli.clusters.api
databricks_cli.dbfs.api
databricks_cli.dbfs.dbfs_path
databricks_cli.groups.api
databricks_cli.instance_pools.api
databricks_cli.jobs.api(1)
databricks_cli.runs.api(2)
databricks_cli.libraries.api
databricks_cli.databricks_cli.pipelines.api
databricks_cli.repos.api
databricks_cli.secrets.api
databricks_cli.tokens.api
databricks_cli.unity_catalog.api
databricks_cli.workspace.api
例如,要使用Clusters API 2.0在工作區中列出可用的集群名稱及其id,請添加以下代碼:
clusters_list=clusters_api。list_clusters()打印(“集群名稱,集群ID”)為集群在clusters_list(“集群”]:打印(f”{集群(“cluster_name”]},{集群(“cluster_id”]}”)
以上指令的完整代碼如下:
進口操作係統從databricks_cli.sdk.api_client進口ApiClient從databricks_cli.clusters.api進口ClusterApiapi_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))clusters_api=ClusterApi(api_client)clusters_list=cluster_api。list_clusters()打印(“集群名稱,集群ID”)為集群在clusters_list(“集群”]:打印(f”{集群(“cluster_name”]},{集群(“cluster_id”]}”)
下麵的例子展示了如何使用Databricks CLI和Python中的源代碼來自動化一些基本使用場景的Databricks REST API。
進口操作係統從databricks_cli.sdk.api_client進口ApiClient從databricks_cli.dbfs.api進口DbfsApi從databricks_cli.dbfs.dbfs_path進口DbfsPathapi_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))dbfs_source_file_path=“dbfs: / tmp /用戶/ someone@example.com//hello-world.txt”local_file_download_path=”。/ hello-world.txt 'dbfs_api=DbfsApi(api_client)dbfs_path=DbfsPath(dbfs_source_file_path)#本地下載工作空間文件。dbfs_api。get_file(dbfs_path,local_file_download_path,覆蓋=真正的)#打印下載文件的內容。打印(開放(local_file_download_path,“r”)。讀())
進口操作係統從databricks_cli.sdk.api_client進口ApiClient從databricks_cli.pipelines.api進口PipelinesApiapi_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))pipelines_api=PipelinesApi(api_client)pipelines_get=pipelines_api。得到(1234年a56b c789 - 0123 d456 - 78901234 e5f6”)打印(f“名稱:{pipelines_get(“名字”]}\ n”\fID:{pipelines_get(“pipeline_id”]}\ n”\f”狀態:{pipelines_get(“狀態”]}\ n”\f創造者:{pipelines_get(“creator_user_name”]}”)
進口操作係統從databricks_cli.sdk.api_client進口ApiClient從databricks_cli.unity_catalog.api進口UnityCatalogApiapi_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))unity_catalog_api=UnityCatalogApi(api_client)目錄=“主要”模式=“my_schema”#在指定的目錄中創建模式(也稱為數據庫)。unity_catalog_create_schema=unity_catalog_api。create_schema(catalog_name=目錄,schema_name=模式,評論=“這是我的schema”)打印(f”模式:{unity_catalog_create_schema(“名字”]}\ n”\f”老板:{unity_catalog_create_schema(“主人”]}\ n”\f“Metastore ID:{unity_catalog_create_schema(“metastore_id”]}”)#刪除模式。unity_catalog_api。delete_schema(f”{目錄}。{模式}”)
進口操作係統從databricks_cli.sdk.api_client進口ApiClient從databricks_cli.workspace.api進口WorkspaceApi,WorkspaceFileInfoapi_client=ApiClient(宿主=操作係統。采用(“DATABRICKS_HOST”),令牌=操作係統。采用(“DATABRICKS_TOKEN”))workspace_api=WorkspaceApi(api_client)workspace_list_objects=workspace_api。list_objects(“/用戶/ someone@example.com/”)為對象在workspace_list_objects:打印(對象。to_row(is_long_form=真正的,is_absolute=真正的))