開始
加載和管理數據
處理數據
政府
參考和資源
2023年3月30日更新
給我們反饋
本文包含演示如何使用Databricks REST API的示例。
在以下示例中,請使用replace< databricks-instance >與工作空間的URL您的Databricks部署。
< databricks-instance >
請注意
作為安全最佳實踐,當使用自動化工具、係統、腳本和應用程序進行身份驗證時,Databricks建議您使用屬於的訪問令牌服務主體而不是工作區用戶。要為服務主體創建訪問令牌,請參見管理服務主體的訪問令牌.
要了解如何對REST API進行身份驗證,請回顧使用Databricks個人訪問令牌進行身份驗證.
本文中的示例假設您正在使用Databricks個人訪問令牌.在以下示例中,請使用replace< your-token >使用您的個人訪問令牌。的旋度示例假設您在下麵存儲Databricks API憑據. netrc.Python示例使用持票人身份驗證。雖然示例演示了在代碼中存儲令牌,但為了在Databricks中安全地利用憑據,我們建議您遵循保密管理用戶指南。
< your-token >
旋度
本例使用Databricks REST API 2.0版本。
卷曲-n -H“接受編碼:gzip”https://< databicks -instance>/api/2.0/clusters/list > clusters.gz
單個API調用上傳的數據量不能超過1MB。要將大於1MB的文件上傳到DBFS,請使用流式API,它是以下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 submit和JAR作業,以及如何運行JAR作業並查看其輸出。
這個例子展示了如何創建一個Python作業。它使用Apache Spark Python Spark Pi估算。本例使用Databricks REST API 2.0版本。
下載Python文件包含示例並將其上傳到什麼是數據庫文件係統(DBFS)?使用數據庫命令行設置和文檔.
DBFS cp pi.py 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 /工作/創建
這個例子展示了如何創建一個spark-submit作業。它使用Apache SparkSparkPi例子和Databricks REST API 2.0版本。
下載JAR包含示例並將JAR上傳到什麼是數據庫文件係統(DBFS)?使用數據庫命令行設置和文檔.
dbfs cp SparkPi-assembly-0.1.jar
curl - n\-x post -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": {"availability": "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)?使用數據庫命令行設置和文檔.
DBFS cp your_code。Rdbfs:/path/to/your_code.R
如果代碼使用SparkR,則必須首先安裝包。Databricks Runtime包含SparkR源代碼。在本地安裝SparkR包,示例如下:
install.packages(“/磚/火花/ R /包裹”,回購=零)圖書館(SparkR)sparkR.session()n<-nrow(createDataFrame(虹膜))write.csv(n,“/ dbfs /道路/ / num_rows.csv”)
Databricks Runtime從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 post -h“application / json內容類型:\- d”{"name": "R腳本火花提交作業"," new_cluster ": {:“spark_version 7.3.x-scala2.12”,:“node_type_id i3.xlarge”,"aws_attributes": {"availability": "SPOT"},“num_workers”:2}," spark_submit_task ": {"parameters": ["dbfs:/path/to/your_code. "R”)}}'https:// < databricks-instance > / api / 2.0 /工作/創建
返回一個作業標識然後您可以使用它來運行作業。
作業標識
命令運行作業作業標識.
curl - n\-x post -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://< databicks -instance>/api/2.0/clusters/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": {"availability": "ON_DEMAND"},“num_workers”:2},"libraries": [{"jar": "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://< databicks -instance>/api/2.0/jobs/runs/get=<運行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://< databicks -instance>/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 driver和executor的日誌,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 /司機和執行程序的日誌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版本。
卷曲-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://< databicks -instance>/api/2.0/workspace/import . curl -n -X POST https://< databicks -instance>/api/2.0/workspace/import . xml\- f路徑=“/用戶/ user@example.com/new-notebook”- f格式=源- f語言=SCALA - f覆蓋=真正的- f內容=@notebook.scala