開始
用戶指南
管理指南
參考指南
資源
2022年10月07日更新
給我們反饋
本文包含演示如何使用Databricks REST API的示例。
在下麵的例子中,替換< databricks-instance >與工作空間的URL您的Databricks部署。
< databricks-instance >
請注意
作為安全最佳實踐,在使用自動化工具、係統、腳本和應用程序進行身份驗證時,Databricks建議您使用屬於服務主體的訪問令牌,而不是工作區用戶。有關更多信息,請參見管理服務主體.
要了解如何對REST API進行身份驗證,請回顧使用Databricks個人訪問令牌進行身份驗證.
本文中的示例假設您正在使用Databricks個人訪問令牌.在下麵的例子中,替換< your-token >使用您的個人訪問令牌。的旋度示例假設您將Databricks API憑據存儲在. netrc.Python示例使用持票人身份驗證。盡管示例演示了在代碼中存儲令牌,但為了在Databricks中安全地利用憑據,我們建議您遵循保密管理用戶指南。
< your-token >
旋度
本例使用Databricks REST API 2.0版本。
curl - n - h“接受編碼:gzip”https:// < databricks-instance > / api / 2.0 /集群/列表> clusters.gz
單個API調用上傳的數據量不能超過1MB。要將大於1MB的文件上傳到DBFS,請使用流API,它是創建,addBlock,關閉.
創建
addBlock
關閉
下麵是一個如何使用Python執行此操作的示例。本例使用Databricks REST API 2.0版本。
進口json進口請求進口base64域=' < databricks-instance >”令牌=' < your-token >”BASE_URL=“https://% s/ api / 2.0 / dbfs /”%(域)defdbfs_rpc(行動,身體):一個輔助函數,用於發出DBFS API請求,請求/響應被編碼/解碼為JSON響應=請求.帖子(BASE_URL+行動,頭={“授權”:不記名的% s'%令牌},json=身體)返回響應.json()#創建一個用於添加塊的句柄處理=dbfs_rpc(“創造”,{“路徑”:“/ temp / upload_large_file”,“覆蓋”:“真正的”}) (“處理”]與開放(' / /地方/文件')作為f:而真正的:一個塊最多可以有1MB塊=f.讀(1<<20.)如果不塊:打破數據=base64.standard_b64encode(塊)dbfs_rpc(“addblock”,{“處理”:處理,“數據”:數據})#關閉句柄完成上傳dbfs_rpc(“關閉”,{“處理”:處理})
下麵的例子展示了如何使用Databricks REST API和請求Python HTTP庫。本例使用Databricks REST API 2.0版本。
進口請求域=' < databricks-instance >”令牌=' < your-token >”響應=請求.帖子(“https://% s/ api / 2.0 /集群/創建”%(域),頭={“授權”:不記名的% s'%令牌},json={“cluster_name”:“my-cluster”,“spark_version”:“5.5.x-scala2.11”,“node_type_id”:“i3.xlarge”,“spark_env_vars”:{“PYSPARK_PYTHON”:“磚/ python3 / bin / python3”},“num_workers”:25})如果響應.status_code= =200:打印(響應.json() (“cluster_id”])其他的:打印(“錯誤啟動集群:% s:% s"%(響應.json() (“error_code”],響應.json() (“消息”)))
下麵的示例顯示如何啟動高並發模式集群使用Databricks REST API。本例使用Databricks REST API 2.0版本。
curl -n -X POST -H“application / json內容類型:- d”{:“cluster_name high-concurrency-cluster”,:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”," spark_conf ": {:“spark.databricks.cluster.profile serverless”,:“spark.databricks.repl.allowedLanguages sql, python, r”}," aws_attributes ": {:“zone_id us-west-2c”,“first_on_demand”:1、“可用性”:“SPOT_WITH_FALLBACK”,“spot_bid_price_percent”:100}," custom_tags ": {:“ResourceClass Serverless”},"自動定量":{“min_workers”:1、“max_workers”:2},“autotermination_minutes”:10} 'https:// < databricks-instance > / api / 2.0 /集群/創建
本節將展示如何創建Python、spark提交和JAR作業,並運行JAR作業並查看其輸出。
這個例子展示了如何創建一個Python作業。它使用Apache Spark Python Spark Pi評估。本例使用Databricks REST API 2.0版本。
下載Python文件包含示例並將其上傳到什麼是數據庫文件係統(DBFS)?使用磚CLI.
DBFS:/docs/pi.py
創建工作。
以下示例演示如何使用磚運行時而且光磚.
磚運行時
curl -n -X POST -H“application / json內容類型:- d\”{"name": "SparkPi Python job"," new_cluster ": {:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”,“num_workers”:2}," spark_python_task ": {:“python_file dbfs: / docs / pi.py”,“參數”:(“10”]}} 'https:// < databricks-instance > / api / 2.0 /工作/創建
光磚
curl -n -X POST -H“application / json內容類型:- d\”{"name": "SparkPi Python job"," new_cluster ": {:“spark_version apache-spark-2.4.x-scala2.11”,:“node_type_id i3.xlarge”,“num_workers”:2}," spark_python_task ": {:“python_file dbfs: / docs / pi.py”,“參數”:(“10”]}} 'https:// < databricks-instance > / api / 2.0 /工作/創建
此示例演示如何創建火花提交作業。它使用Apache SparkSparkPi例子和Databricks REST API 2.0版本。
下載JAR包含示例,並將JAR上傳到什麼是數據庫文件係統(DBFS)?使用磚CLI.
dbfs:/docs/sparkpi.jar . conf
curl - n\- x - h後“application / json內容類型:- d\”{"name": "SparkPi spark-submit job"," new_cluster ": {:“spark_version 7.3.x-scala2.12”,:“node_type_id r3.xlarge”,“aws_attributes”:{“可用性”:“ON_DEMAND”},“num_workers”:2}," spark_submit_task ": {“參數”:(”——階級”,“org.apache.spark.examples.SparkPi”,“dbfs: / docs / sparkpi.jar”,“10”]}} 'https:// < databricks-instance > / api / 2.0 /工作/創建
這個例子展示了如何創建一個spark-submit作業來運行R腳本。本例使用Databricks REST API 2.0版本。
將R文件上傳到什麼是數據庫文件係統(DBFS)?使用磚CLI.
dbfs cp your_code。Rdbfs:/path/to/your_code.R
如果代碼使用SparkR,它必須首先安裝包。Databricks運行時包含SparkR源代碼。從本地目錄安裝SparkR包,示例如下:
install.packages(“/磚/火花/ R /包裹”,回購=零)圖書館(SparkR)sparkR.session()n<-nrow(createDataFrame(虹膜))write.csv(n,“/ dbfs /道路/ / num_rows.csv”)
Databricks運行時從CRAN安裝sparklyr的最新版本。如果代碼使用sparklyr,您必須在spark_connect.要形成Spark主URL,請使用SPARK_LOCAL_IP環境變量獲取IP,使用默認端口7077。例如:
spark_connect
SPARK_LOCAL_IP
圖書館(sparklyr)主<-粘貼(“火花:/ /”,Sys.getenv(“SPARK_LOCAL_IP”),”:7077”,9月="")sc<-spark_connect(主)iris_tbl<-copy_to(sc,虹膜)write.csv(iris_tbl,“/ dbfs /道路/ / sparklyr_iris.csv”)
curl - n\- x - h後“application / json內容類型:\- d”{"name": "R script spark-submit job"," new_cluster ": {:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”,“aws_attributes”:{“可用性”:“現貨”},“num_workers”:2}," spark_submit_task ": {“參數”(“dbfs: /路徑:/ / your_code。R”)}} 'https:// < databricks-instance > / api / 2.0 /工作/創建
這返回一個作業標識然後您可以使用它來運行作業。
作業標識
方法運行作業作業標識.
curl - n\- x - h後“application / json內容類型:\- d'{"job_id": }'https:// < databricks-instance > / api / 2.0 /工作/運行
這個例子展示了如何創建和運行JAR作業。它使用Apache SparkSparkPi例子和Databricks REST API 2.0版本。
下載JAR包含的例子。
使用API將JAR上傳到你的Databricks實例:
curl - n\- ffiledata=@“SparkPi-assembly-0.1.jar”\- f路徑=“/ docs / sparkpi.jar”\- f覆蓋=真正的\https:// < databricks-instance > / api / 2.0 / dbfs /把
調用成功返回{}.否則您將看到一條錯誤消息。
{}
在創建作業之前,獲取所有Spark版本的列表。
curl - n https:// < databricks-instance > / api / 2.0 /集群/ spark-versions
這個示例使用7.3.x-scala2.12.看到運行時版本字符串查看有關Spark集群版本的更多信息。
7.3.x-scala2.12
創建工作。JAR被指定為庫,主類名在Spark JAR任務中被引用。
curl -n -X POST -H“application / json內容類型:\- d”{"name": "SparkPi JAR job"," new_cluster ": {:“spark_version 7.3.x-scala2.12”,:“node_type_id r3.xlarge”,“aws_attributes”:{“可用性”:“ON_DEMAND”},“num_workers”:2},“庫”:[{“罐子”:“dbfs: / docs / sparkpi.jar”})," spark_jar_task ": {:“main_class_name org.apache.spark.examples.SparkPi”,“參數”:“10”}} 'https:// < databricks-instance > / api / 2.0 /工作/創建
使用運行現在:
運行現在
導航到https:// < databricks-instance > / #工作/ <作業id >你會看到你的工作正在運行。
https:// < databricks-instance > / #工作/ <作業id >
您還可以使用從前一個請求返回的信息從API檢查它。
curl - n https:// < databricks-instance > / api / 2.0 /工作/運行/ ? run_id=<運行id >|金橋
它應該返回如下內容:
{“job_id”:35,“run_id”:30.,“number_in_job”:1,“original_attempt_run_id”:30.,“狀態”:{“life_cycle_state”:“終止”,“result_state”:“成功”,“state_message”:""},“任務”:{“spark_jar_task”:{“jar_uri”:"",“main_class_name”:“org.apache.spark.examples.SparkPi”,“參數”:[“10”],“run_as_repl”:真正的}},“cluster_spec”:{“new_cluster”:{“spark_version”:“7.3.x-scala2.12”,“node_type_id”:“<節點類型>”,“enable_elastic_disk”:假,“num_workers”:1},“庫”:[{“罐子”:“dbfs: / docs / sparkpi.jar”}]},“cluster_instance”:{“cluster_id”:“0412 - 165350 type465”,“spark_context_id”:“5998195893958609953”},“start_time”:1523552029282,“setup_duration”:211000,“execution_duration”:33000,“cleanup_duration”:2000,“觸發”:“ONE_TIME”,“creator_user_name”:“…”,“run_name”:“SparkPi JAR工作”,“run_page_url”:“< databricks-instance > / ?o = 3901135158661429 # 35 /運行/工作/ 1”,“run_type”:“JOB_RUN”}
如需查看作業輸出,請訪問作業運行詳細信息頁麵.
執行命令,時間=1523552263909.π是約3.13973913973914
要創建一個啟用表訪問控製的集群,請指定以下內容spark_conf屬性。本例使用Databricks REST API 2.0版本。
spark_conf
curl -X POST https:///api/2.0/clusters/create -d'{:“cluster_name my-cluster”,:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”," spark_conf ": {“spark.databricks.acl.dfAclsEnabled”:沒錯,“spark.databricks.repl。allowedLanguages”:“python, sql”}," aws_attributes ": {“可用性”:“點”,:“zone_id us-west-2a”},“num_workers”:1、" custom_tags ": {“costcenter”:“標簽”,:“applicationname Tags1”}} '
除了可以在Spark UI中查看Spark驅動程序和執行器的日誌外,Databricks還可以將日誌下發到DBFS和S3目的地。參見以下示例。
下麵的cURL命令創建一個名為cluster_log_dbfs並請求Databricks將其日誌發送到dbfs: /日誌使用集群ID作為路徑前綴。本例使用Databricks REST API 2.0版本。
cluster_log_dbfs
dbfs: /日誌
curl -n -X POST -H“application / json內容類型:- d\”{:“cluster_name cluster_log_dbfs”,:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”,“num_workers”:1、" cluster_log_conf ": {" dbfs ": {“目的地”:“dbfs: /日誌”}}} 'https:// < databricks-instance > / api / 2.0 /集群/創建
響應應該包含集群ID:
{“cluster_id”:“1111 - 223344 abc55”}
創建集群後,Databricks每隔5分鍾將日誌文件同步到目標服務器。它上傳驅動日誌到dbfs: /日誌/ 1111 - 223344 abc55 /司機和executor記錄到dbfs: /日誌/ 1111 - 223344 abc55 /執行人.
dbfs: /日誌/ 1111 - 223344 abc55 /司機
dbfs: /日誌/ 1111 - 223344 abc55 /執行人
Databricks支持使用集群實例概要文件將日誌發送到S3位置。下麵的命令創建一個名為cluster_log_s3並請求Databricks將其日誌發送到s3: / /桶/日誌使用指定的實例概要文件。本例使用Databricks REST API 2.0版本。
cluster_log_s3
s3: / /桶/日誌
curl -n -X POST——H“application / json內容類型:d\”{:“cluster_name cluster_log_s3”,:“spark_version 7.3.x-scala2.12”," aws_attributes ": {“可用性”:“點”,:“zone_id us-west-2c”,:“instance_profile_arn攻擊:aws:我::12345678901234:instance-profile / YOURIAM”},“num_workers”:1、" cluster_log_conf ": {" s3 ": {“目的地”:“s3: / /桶/日誌”,“地區”:“us-west-2”}}} 'https:// < databricks-instance > / api / 2.0 /集群/創建
Databricks使用相應的實例配置文件將日誌發送到S3目的地。Databricks支持使用Amazon S3-Managed Keys (SSE-S3)和AWS KMS-Managed Keys (SSE-KMS)進行加密。看到加密S3桶中的數據獲取詳細信息。
重要的
您應該確保實例配置文件的IAM角色有權限將日誌上傳到S3目的地並讀取它們。使用canned_acl在API請求中更改默認權限。
canned_acl
您可以通過API檢索帶有日誌傳遞狀態的集群信息。本例使用Databricks REST API 2.0版本。
curl - n - h“application / json內容類型:- d\”{“cluster_id”:“1111 - 223344 abc55”} 'https:// < databricks-instance > / api / 2.0 /集群/
如果最新的一批日誌上傳成功,響應應該隻包含最後一次嚐試的時間戳:
{“cluster_log_status”:{“last_attempted”:1479338561}}
在發生錯誤的情況下,錯誤消息將出現在響應中:
{“cluster_log_status”:{“last_attempted”:1479338561,“last_exception”:"異常:訪問被拒絕…"}}
下麵是一些使用Workspace API列出、獲取有關工作區對象的信息、創建、刪除、導出和導入工作區對象的示例。
下麵的cURL命令列出了工作空間中的路徑。本例使用Databricks REST API 2.0版本。
curl -n -X GET -H“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/”} 'https:// < databricks-instance > / api / 2.0 /工作區/列表
響應應該包含一個狀態列表:
{“對象”:[{“object_type”:“目錄”,“路徑”:“/用戶/ user@example.com/folder”},{“object_type”:“筆記本”,“語言”:“巨蟒”,“路徑”:“/用戶/ user@example.com/notebook1”},{“object_type”:“筆記本”,“語言”:“SCALA”,“路徑”:“/用戶/ user@example.com/notebook2”}]}
如果路徑是一個筆記本,則響應包含一個數組,其中包含輸入筆記本的狀態。
下麵的cURL命令獲取工作空間中路徑的狀態。本例使用Databricks REST API 2.0版本。
curl -n -X GET -H“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/”} 'https:// < databricks-instance > / api / 2.0 / workspace /獲得狀態
響應應該包含輸入路徑的狀態:
{“object_type”:“目錄”,“路徑”:“/用戶/ user@example.com”}
下麵的cURL命令創建一個文件夾。它遞歸地創建文件夾mkdir- p.如果文件夾已經存在,它將什麼也不做並成功。本例使用Databricks REST API 2.0版本。
mkdir- p
curl -n -X POST -H“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new/folder”} 'https:// < databricks-instance > / api / 2.0 / workspace / mkdir
如果請求成功,將返回一個空JSON字符串。
下麵的cURL命令刪除一個筆記本或文件夾。您可以啟用遞歸遞歸地刪除非空文件夾。本例使用Databricks REST API 2.0版本。
遞歸
curl -n -X POST -H“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new/folder”,“遞歸”:“假”} 'https:// < databricks-instance > / api / 2.0 / workspace /刪除
如果請求成功,則返回一個空JSON字符串。
下麵的cURL命令導出一個筆記本電腦。筆記本電腦可導出以下格式:源,超文本標記語言,JUPYTER,DBC.導出文件夾時,隻能導出為DBC.本例使用Databricks REST API 2.0版本。
源
超文本標記語言
JUPYTER
DBC
curl -n -X GET\- d'{"path": "/Users/user@example.com/notebook", "format": "SOURCE"}'\https:// < databricks-instance > / api / 2.0 /工作區/出口
響應包含base64編碼的筆記本內容。
{“內容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = "}
您也可以直接下載導出的筆記本。
curl -n -X GET“https:// < databricks-instance > / api / 2.0 / workspace /出口?格式= SOURCE&direct_download =正確道路= /用戶/ user@example.com/notebook”
響應將是導出的筆記本內容。
下麵的cURL命令在工作區中導入一個筆記本。多種格式(源,超文本標記語言,JUPYTER,DBC支持)。如果格式是源,你必須指定語言.的內容參數包含base64編碼的筆記本內容。您可以啟用覆蓋覆蓋現有的筆記本。本例使用Databricks REST API 2.0版本。
格式
語言
內容
覆蓋
curl -n -X POST -H“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new-notebook”,“格式”:“源”,“語言”:“SCALA”,“內容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = ",“覆蓋”:“假”} 'https:// < databricks-instance > / api / 2.0 / workspace /導入
或者,你也可以通過多部分形式導入一個筆記本。
curl -n -X POST https:///api/2.0/workspace/import . html\- f路徑=“/用戶/ user@example.com/new-notebook”- f格式=源- f語言=SCALA - f覆蓋=真正的- f內容=@notebook.scala