開始
用戶指南
管理指南
參考指南
資源
更新2023年1月6日
給我們反饋
請注意
CLI功能不可用這個版本磚在穀歌的雲上。
本文包含的示例演示如何使用磚REST API。
在下麵的例子中,替換< databricks-instance >與工作空間的URL你的磚部署。
< databricks-instance >
作為一個安全最佳實踐,驗證自動化工具時,係統中,腳本和應用程序,磚屬於建議您使用訪問令牌服務主體而不是用戶工作區。為服務主體,創建訪問令牌管理服務主體的訪問令牌。
學習如何驗證REST API,審查身份驗證使用磚個人的訪問令牌。
本文中的示例假設您正在使用磚個人訪問令牌。在下麵的例子中,替換< your-token >與你的個人訪問令牌。的旋度示例假設您存儲數據磚API憑證. netrc。Python示例使用持票人身份驗證。雖然例子顯示存儲代碼中的令牌,利用在磚安全憑證,我們建議你遵循保密管理用戶指南。
< your-token >
旋度
這個示例使用磚REST API 2.0版。
curl - n - h“接受編碼:gzip”https:// < databricks-instance > / api / 2.0 /集群/ > clusters.gz列表
數據上傳的單一API調用的數量不能超過1 mb。上傳一個文件大於1 mb DBFS,使用流API,這是一個組合創建,addBlock,關閉。
創建
addBlock
關閉
這裏是如何執行此操作的一個例子使用Python。這個示例使用磚REST API 2.0版。
進口json進口請求進口base64域=“< databricks-instance >”令牌=“< your-token >”BASE_URL=“https://% s/ api / 2.0 / dbfs /”%(域)defdbfs_rpc(行動,身體):”“”一個helper函數DBFS API請求,請求/響應編碼/解碼為JSON " " "響應=請求。帖子(BASE_URL+行動,頭={“授權”:不記名的% s”%令牌},json=身體)返回響應。json()#創建一個將用於處理添加塊處理=dbfs_rpc(“創造”,{“路徑”:“/ temp / upload_large_file”,“覆蓋”:“真正的”})(“處理”]與開放(' / /地方/文件')作為f:而真正的:#一塊可以最多1 mb塊=f。讀(1< <20.)如果不塊:打破數據=base64。standard_b64encode(塊)dbfs_rpc(“addblock”,{“處理”:處理,“數據”:數據})#關閉處理完成上傳dbfs_rpc(“關閉”,{“處理”:處理})
下麵的例子顯示了如何啟動Python 3使用磚REST API和集群請求Python HTTP庫。這個示例使用磚REST API 2.0版。
進口請求域=“< databricks-instance >”令牌=“< your-token >”響應=請求。帖子(“https://% s/ api / 2.0 /集群/創建”%(域),頭={“授權”:不記名的% s”%令牌},json={“cluster_name”:“my-cluster”,“spark_version”:“7.5.x-scala2.12”,“node_type_id”:“n1-highmem-4”,“spark_env_vars”:{“PYSPARK_PYTHON”:“磚/ python3 / bin / python3”},“num_workers”:25})如果響應。status_code= =200年:打印(響應。json()(“cluster_id”])其他的:打印(“錯誤啟動集群:% s:% s”%(響應。json()(“error_code”),響應。json()(“消息”)))
本小節展示如何創建Python,火花提交,JAR工作和運行JAR任務並查看它的輸出。
這個例子展示了如何創建一個Python的工作。它使用Apache火花Python火花π估計。這個示例使用磚REST API 2.0版。
下載Python文件包含的示例和上傳磚文件係統(DBFS)是什麼?使用磚CLI。
dbfs cpπ。py dbfs: / docs / pi.py
創建工作。
curl - n - x - h“application / json內容類型:- d\”{“名稱”:“SparkPi Python工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“num_workers”: 2}," spark_python_task ": {:“python_file dbfs: / docs / pi.py”,“參數”:(“10”]}}'https:// < databricks-instance > / api / 2.0 /工作/創建
這個例子展示了如何創建一個spark-submit工作。它使用Apache火花SparkPi例子和磚REST API的版本2.0。
下載JAR包含示例和上傳的JAR磚文件係統(DBFS)是什麼?使用磚CLI。
dbfs cp sparkpi -裝配- 0.1。jar dbfs: / docs / sparkpi.jar
curl - n\- x - h後“application / json內容類型:- d\”{“名稱”:“SparkPi spark-submit工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“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腳本。這個示例使用磚REST API 2.0版。
上傳文件磚文件係統(DBFS)是什麼?使用磚CLI。
dbfs cp your_code。/ / your_code.R R dbfs: /路徑
如果代碼使用SparkR,它必須首先安裝包。磚運行時包含SparkR源代碼。從它的本地目錄安裝SparkR包下麵的例子所示:
install.packages(“/磚/火花/ R /包裹”,回購=零)圖書館(SparkR)sparkR.session()n< -nrow(createDataFrame(虹膜))write.csv(n,“/ dbfs /道路/ / num_rows.csv”)
磚運行時安裝最新版本的sparklyr凹口。如果代碼使用sparklyr,您必須指定火花大師的URLspark_connect。形成火花主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”{“名稱”:“R腳本spark-submit工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“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”: <作業id >}’https:// < databricks-instance > / api / 2.0 /工作/運行
這個例子顯示了如何創建並運行一個JAR任務。它使用Apache火花SparkPi例子和磚REST API的版本2.0。
下載JAR包含的例子。
上傳JAR磚實例使用API:
curl - n\- ffiledata=@“SparkPi-assembly-0.1.jar”\- f路徑=“/ docs / sparkpi.jar”\- f覆蓋=真正的\https:// < databricks-instance > / api / 2.0 / dbfs /把
一個成功的調用返回{}。否則你將會看到一條錯誤消息。
{}
獲得所有火花版本的列表之前創建你的工作。
curl - n https:// < databricks-instance > / api / 2.0 /集群/ spark-versions
這個示例使用7.3.x-scala2.12。看到運行時版本字符串關於火花集群版本的更多信息。
7.3.x-scala2.12
創建工作。JAR被指定為一個庫和主類中引用的名字是火花JAR任務。
curl - n - x - h“application / json內容類型:\- d”{“名稱”:“SparkPi JAR工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“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在你的請求主體屬性。這個示例使用磚REST API 2.0版。
spark_conf
curl - x發布https:// < databricks-instance > / api / 2.0 /集群創建- d”{:“cluster_name my-cluster-from-api”,:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”," spark_conf ": {“spark.databricks.acl.dfAclsEnabled”:沒錯,“spark.databricks.repl。allowedLanguages”:“python, sql”},“num_workers”: 1、" custom_tags ": {“costcenter”:“標簽”,:“applicationname Tags1”}}'
這裏有一些例子使用工作區API列表,獲取信息,創建、刪除、導出和導入工作區對象。
以下cURL命令在工作區中列出了一個路徑。這個示例使用磚REST API 2.0版。
curl - n - x - 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命令得到的狀態路徑在工作區中。這個示例使用磚REST API 2.0版。
curl - n - x - h“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/”}'https:// < databricks-instance > / api / 2.0 / workspace /獲得狀態
響應應該包含的狀態輸入路徑:
{“object_type”:“目錄”,“路徑”:“/用戶/ user@example.com”}
以下cURL命令創建了一個文件夾。它創建的文件夾遞歸mkdir- p。如果該文件夾已經存在,它將什麼也不做和成功。這個示例使用磚REST API 2.0版。
mkdir- p
curl - n - x - h“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new/folder”}'https:// < databricks-instance > / api / 2.0 / workspace / mkdir
如果請求成功,將返回一個空的JSON字符串。
以下cURL命令刪除一個筆記本或文件夾。您可以啟用遞歸遞歸刪除一個非空文件夾。這個示例使用磚REST API 2.0版。
遞歸
curl - n - x - h“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new/folder”,“遞歸”:“假”}'https:// < databricks-instance > / api / 2.0 / workspace /刪除
以下cURL命令出口一個筆記本。筆記本電腦可以導出以下格式:源,HTML,JUPYTER,DBC。一個文件夾隻能導出DBC。這個示例使用磚REST API 2.0版。
源
HTML
JUPYTER
DBC
curl - n - x得到\- d”{“路徑”:“/用戶/ user@example.com/notebook”,“格式”:“源”}”\https:// < databricks-instance > / api / 2.0 /工作區/出口
響應包含base64編碼的筆記本的內容。
{“內容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = "}
或者,您可以直接下載導出的筆記本。
curl - n - x得到“https:// < databricks-instance > / api / 2.0 /工作區/出口?格式= SOURCE&direct_download =正確道路= /用戶/ user@example.com/notebook”
響應將導出的筆記本的內容。
以下cURL命令在工作區中導入一個筆記本。多種格式(源,HTML,JUPYTER,DBC支持)。如果格式是源,您必須指定語言。的內容參數包含base64編碼的筆記本的內容。您可以啟用覆蓋覆蓋現有的筆記本。這個示例使用磚REST API 2.0版。
格式
語言
內容
覆蓋
curl - n - x - h“application / json內容類型:- d\”{“路徑”:“/用戶/ user@example.com/new-notebook”,“格式”:“源”,“語言”:“SCALA”,“內容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = ",“覆蓋”:“假”}'https:// < databricks-instance > / api / 2.0 / workspace /導入
或者,您可以導入一個筆記本通過多部分表單post。
curl - n - x發布https:// < databricks-instance > / api / 2.0 / workspace /導入\- f路徑=“/用戶/ user@example.com/new-notebook”- f格式=源- f語言=SCALA - f覆蓋=真正的- f內容=@notebook.scala