REST API 1.2

磚REST API允許您以編程方式訪問數據磚而不是通過web UI。

本文涵蓋了REST API 1.2。REST API最新的版本,以及REST API2.12.0也可用。

重要的

重要的

訪問數據磚REST api,你必須進行身份驗證

REST API的用例

  • 啟動Apache火花引發了從現有的生產係統或工作氣流

  • 編程帶來了一定規模的集群在一個固定的時間在晚上,然後關閉它。

API分類

  • 執行上下文:名稱空間創建獨特的變量可以被稱為火花命令。

  • 命令執行:運行命令在一個特定的執行上下文。

細節

  • 這個REST API在運行HTTPS。

  • 對於檢索信息,使用HTTP GET。

  • 修改狀態,使用HTTP POST。

  • 文件上傳,使用多部分/格式。否則使用application / json

  • 響應內容類型是JSON。

  • 基本身份驗證用於驗證用戶每一個API調用。

  • 用戶憑證base64編碼,並在每個API調用HTTP頭。例如,授權:基本YWRtaW46YWRtaW4 =。如果你使用旋度,或者你可以存儲用戶憑證. netrc文件。

  • 關於使用磚REST API的更多信息,參見磚REST API參考

開始

  • 嚐試本文中的示例,替換< databricks-instance >工作空間的URL你的磚部署。

  • 下麵的例子使用旋度和一個. netrc文件。你可以適應這些旋度例子與HTTP庫編程語言的選擇。

API參考

集群的列表

方法和路徑:

得到/ api / 1.2 /集群/列表

例子

要求:

curl——netrc請求\https:// < databricks-instance > / api / 1.2 /集群列表中

回應:

({“id”:“1234 - 567890 span123”,“名稱”:“MyCluster”,“狀態”:“終止”,“driverIp”:”“,“jdbcPort”:10000年,“numWorkers”:0},{“…”}]

請求模式

一個也沒有。

響應模式

一個對象數組,其中每個對象代表一個集群的信息如下:

id

類型:字符串

集群的ID。

的名字

類型:字符串

集群的名稱。

狀態

類型:字符串

集群的狀態。之一:

  • 錯誤

  • 等待

  • 重新配置

  • 重新啟動

  • 運行

  • 終止

  • 終止

  • 未知的

driverIp

類型:字符串

司機的IP地址。

jdbcPort

類型:數量

JDBC端口號。

numWorkers

類型:數量

工人的數量的集群。

獲得一個集群信息

方法和路徑:

得到/ api / 1.2 /集群/狀態

例子

要求:

curl——netrc\https:// < databricks-instance > / api / 1.2 /集群/狀態\——數據clusterId=1234年567890 - span123

回應:

{“id”:“1234 - 567890 span123”,“名稱”:“MyCluster”,“狀態”:“終止”,“driverIp”:”“,“jdbcPort”:10000年,“numWorkers”:0}

請求模式

clusterId

類型:字符串

集群的ID。

響應模式

集群對象表示的信息。

id

類型:字符串

集群的ID。

的名字

類型:字符串

集群的名稱。

狀態

類型:字符串

集群的狀態。之一:

  • 錯誤

  • 等待

  • 重新配置

  • 重新啟動

  • 運行

  • 終止

  • 終止

  • 未知的

driverIp

類型:字符串

司機的IP地址。

jdbcPort

類型:數量

JDBC端口號。

numWorkers

類型:數量

工人的數量的集群。

重新啟動集群

方法和路徑:

帖子/ api / 1.2 /集群/重新啟動

例子

要求:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /集群/重新啟動\——數據clusterId=1234年567890 - span123

回應:

{“id”:“1234 - 567890 span123”}

請求模式

clusterId

類型:字符串

重新啟動集群的ID。

響應模式

id

類型:字符串

集群的ID。

創建一個執行上下文

方法和路徑:

帖子/ api / 1.2 /環境/創建

例子

要求:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /環境/創建\——數據clusterId=1234年567890 - span123\——數據語言=sql

回應:

{“id”:“1234567890123456789”}

請求模式

clusterId

類型:字符串

集群的ID來創建上下文。

clusterId

類型:字符串

的語言上下文。之一:

  • python

  • scala

  • sql

響應模式

id

類型:字符串

執行上下文的ID。

得到一個執行上下文的信息

方法和路徑:

得到/ api / 1.2 /環境/狀態

例子

要求:

curl——netrc https:// < databricks-instance > / api / 1.2 /環境/地位? clusterId=1234年567890 - span123&contextId=1234567890123456789

回應:

{“id”:“1234567890123456789”,“狀態”:“運行”}

請求模式

clusterId

類型:字符串

集群的ID執行上下文信息。

contextId

類型:字符串

執行上下文的ID。

響應模式

id

類型:字符串

執行上下文的ID。

狀態

類型:字符串

執行上下文的狀態。之一:

  • 錯誤

  • 等待

  • 運行

刪除一個執行上下文

方法和路徑:

帖子/ api / 1.2 /環境/銷毀

例子

要求:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /環境/銷毀\——數據clusterId=1234年567890 - span123\——數據contextId=1234567890123456789

回應:

{“id”:“1234567890123456789”}

請求模式

clusterId

類型:字符串

集群的ID摧毀的執行上下文。

contextId

類型:字符串

執行上下文摧毀的ID。

響應模式

id

類型:字符串

執行上下文的ID。

運行一個命令

方法和路徑:

帖子/ api / 1.2 /命令/執行

例子

要求:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/執行\——頭“application / json內容類型:\——數據@execute-command.json

execute-command.json:

{“clusterId”:“1234 - 567890 span123”,“contextId”:“1234567890123456789”,“語言”:“巨蟒”,“命令”:“打印”(“Hello, World !”)}

回應:

{“id”:“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”}

請求模式

clusterId

類型:字符串

的ID集群上運行命令。

contextId

類型:字符串

的ID執行上下文內運行該命令。

語言

類型:字符串

的語言命令。

命令

類型:字符串

要運行的命令字符串。

指定或命令commandFile

commandFile

類型:字符串

一個文件的路徑包含要運行的命令。

指定或commandFile命令

選項

類型:字符串

一個可選值使用下遊的地圖。例如,一個displayRowLimit覆蓋(用於測試)。

響應模式

id

類型:字符串

的ID命令。

得到命令的信息

方法和路徑:

得到/ api / 1.2 /命令/狀態

例子

要求:

curl——netrc\https:// < databricks-instance > / api / 1.2 /命令/狀態\——數據clusterId=1234年567890 - span123\——數據contextId=1234567890123456789\——數據commandId=1234年ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890

回應:

{“id”:“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”,“狀態”:“完成”,“結果”:{“resultType”:“文本”,“數據”:“你好,世界!”}}

請求模式

clusterId

類型:字符串

集群的ID命令的信息。

contextId

類型:字符串

執行上下文的ID相關聯的命令。

commandId

類型:字符串

的ID命令來獲取信息。

響應模式

id

類型:字符串

的ID命令。

狀態

類型:字符串

命令的狀態。之一:

  • 取消了

  • 取消

  • 錯誤

  • 完成了

  • 排隊

  • 運行

結果

類型:對象

該命令的結果。

  • resultType:結果的類型。

    類型:字符串

    之一:

    • 錯誤

    • 圖像

    • 圖片

    • 文本

錯誤:

  • 導致:錯誤的原因。

    類型:字符串

圖像:

  • 文件名:圖像文件名。

    類型:字符串

圖片:

  • 文件名:圖片的文件名。

    類型:數組字符串

:

  • 數據:表數據。

    類型:數組數組任何

  • 模式:表模式。

    類型:數組數組(字符串,有的話)

  • 截斷:真正的如果返回部分結果。

    類型:真正的/

  • isJsonSchema:真正的如果返回一個JSON模式而不是蜂巢類型的字符串表示。

    類型:真正的/

文本:

  • 數據:文本。

    類型:字符串

取消一個命令

方法和路徑:

POST / api / 1.2 /命令/取消

例子

要求:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/取消\——數據clusterId=1234年567890 - span123\——數據contextId=1234567890123456789\——數據commandId=1234年ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890

回應:

{“id”:“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”}

請求模式

clusterId

類型:字符串

集群的ID相關聯的命令取消。

contextId

類型:字符串

執行上下文的ID相關聯的命令取消。

commandId

類型:字符串

的ID命令取消。

響應模式

id

類型:字符串

的ID命令。

一個集群的庫列表

重要的

這個操作是棄用。使用集群狀態在庫的API。

方法和路徑:

得到/ api / 1.2 /圖書館/列表

例子

要求:

curl——netrc\https:// < databricks-instance > / api / 1.2 /圖書館/列表\——數據clusterId=1234年567890 - span123

請求模式

clusterId

類型:字符串

集群的ID。

響應模式

一個對象數組,其中每個對象代表一個圖書館的信息如下:

的名字

類型:字符串

庫的名稱。

狀態

類型:字符串

圖書館的狀態。之一:

  • LibraryError

  • LibraryLoaded

  • LibraryPending

上傳一個圖書館集群

重要的

這個操作是棄用。使用安裝在庫的API。

方法和路徑:

帖子/ api / 1.2 /圖書館/上傳

請求模式

clusterId

類型:字符串

集群的ID上傳圖書館。

的名字

類型:字符串

庫的名稱。

語言

類型:字符串

圖書館的語言。

uri

類型:字符串

圖書館的URI。

該方案可以文件,http,或https

響應模式

關於上傳圖書館的信息。

語言

類型:字符串

圖書館的語言。

uri

類型:字符串

圖書館的URI。

附加的例子

以下提供的命令,您可以使用額外的例子旋度或適應一個HTTP庫編程語言的選擇。

創建一個執行上下文

創建一個指定集群上執行上下文對於給定編程語言:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /環境/創建\——頭“application / json內容類型:\——數據”{“語言”:“scala”,“clusterId”:“1234 - 567890”span123}”

得到執行上下文的信息:

curl——netrc\https:// < databricks-instance > / api / 1.2 /環境/狀態\——數據' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 '

刪除執行上下文:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /環境/銷毀\——頭“application / json內容類型:\——數據”{contextId”:“1234567890123456789”、“clusterId”:“1234 - 567890”span123}”

運行一個命令

已知的限製:命令執行不支持運行%

運行一個命令字符串:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/執行\——頭“application / json內容類型:\——數據”{“語言”:“scala”,“clusterId”:“1234 - 567890 span123”、“contextId”:“1234567890123456789”,“命令”:“sc.parallelize (1 - 10)。收集“}”

運行一個文件:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/執行\——頭“內容類型:多部分/格式”\——形式語言=python\——形式clusterId=1234年567890 - span123\——形式contextId=1234567890123456789\——形式命令=@myfile.py

顯示命令的狀態和結果:

curl——netrc\https:// < databricks-instance > / api / 1.2 /命令/狀態\——數據' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 &commandid = 1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”

取消的命令:

curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/取消\——數據' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 &commandid = 1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”\

上傳並運行一個火花JAR

上傳一個罐子

使用REST API(最新)上傳一個JAR,附加一個集群。

運行一個罐子

  1. 創建一個執行上下文。

    curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /環境/創建\——數據“語言= scala&clusterId = 1234 - 567890 span123”
    {“id”:“1234567890123456789”}
  2. 執行一個命令,使用你的罐子。

    curl——netrc POST請求\https:// < databricks-instance > / api / 1.2 /命令/執行\——數據的語言= scala&clusterId = 1234 - 567890 span123&contextid = 1234567890123456789命令= println (com.databricks.apps.logs.chapter1.LogAnalyzer.processLogFile (sc, null, dbfs: / somefile.log))”
    {“id”:“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”}
  3. 檢查你的命令的狀態。它可能不會返回立即如果你正在運行一個冗長的火花的工作。

    curl——netrc“https:// < databricks-instance > / api / 1.2 /命令/地位? clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 &commandid = 1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”
    {“id”:“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”,“結果”:{“數據”:“內容大小Avg: 1234分鍾:1234年,馬克斯:1234”,“resultType”:“文本”},“狀態”:“完成”}

    允許的值resultType包括:

    • 錯誤

    • 圖像

    • 圖片

    • 文本