Rest API 1.2

Databricks REST API允许您通过编程方式访问Databricks,而不是通过web UI。

本文涵盖REST API 1.2。REST API最新的版本,以及REST API2.1而且2.0,也有。

另请参阅REST API浏览器(测试版)

重要的

重要的

要访问Databricks REST api,必须进行身份验证

REST API用例

  • 启动从现有生产系统或从气流

  • 以编程的方式在一天的固定时间启动一定大小的集群,然后在晚上关闭它。

API分类

  • 执行上下文:创建唯一的变量名称空间,用于调用Spark命令。

  • 命令执行:在指定的执行上下文中执行命令。

细节

  • 这个REST API在HTTPS上运行。

  • 为了检索信息,使用HTTP GET。

  • 要修改状态,请使用HTTP POST。

  • 对于文件上传,使用多部分/格式.否则使用application / json

  • 响应内容类型是JSON。

  • 基本身份验证用于对每个API调用进行用户身份验证。

  • 用户凭证是base64编码的,并且在每个API调用的HTTP报头中。例如,授权:基本YWRtaW46YWRtaW4 =.如果你使用旋度,也可以将用户凭据存储在. netrc文件。

  • 有关使用Databricks REST API的更多信息,请参见Databricks REST API参考

开始

  • 要尝试本文中的示例,请替换< databricks-instance >工作空间的URL您的Databricks部署。

  • 下面的例子使用旋度和一个. netrc文件.你可以调整这些旋度使用您选择的编程语言的HTTP库的示例。

API参考

获取集群列表

方法和路径:

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

例子

要求:

curl—netrc—请求GEThttps:// < 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—gethttps:// < databricks-instance > / api / 1.2 /集群/状态——数据clusterId1234567890 - 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—请求POSThttps:// < databricks-instance > / api / 1.2 /集群/重新启动——数据clusterId1234567890 - span123

回应:

“id”“1234 - 567890 span123”

请求模式

clusterId

类型:字符串

需要重启的集群ID。

响应模式

id

类型:字符串

集群ID。

创建执行上下文

方法和路径:

帖子/ api / 1.2 /环境/创建

例子

要求:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /环境/创建——数据clusterId1234567890 - span123——数据语言sql

回应:

“id”“1234567890123456789”

请求模式

clusterId

类型:字符串

要为其创建上下文的集群的ID。

clusterId

类型:字符串

语言的语境。之一:

  • python

  • scala

  • sql

响应模式

id

类型:字符串

执行上下文的ID。

获取关于执行上下文的信息

方法和路径:

得到/ api / 1.2 /环境/状态

例子

要求:

curl——netrc https://< databics -instance>/api/1.2/contexts/status1234567890 - span123contextId1234567890123456789

回应:

“id”“1234567890123456789”“状态”“运行”

请求模式

clusterId

类型:字符串

要获取其执行上下文信息的集群的ID。

contextId

类型:字符串

执行上下文的ID。

响应模式

id

类型:字符串

执行上下文的ID。

状态

类型:字符串

执行上下文的状态。之一:

  • 错误

  • 等待

  • 运行

删除执行上下文

方法和路径:

帖子/ api / 1.2 /环境/销毁

例子

要求:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /环境/销毁——数据clusterId1234567890 - span123——数据contextId1234567890123456789

回应:

“id”“1234567890123456789”

请求模式

clusterId

类型:字符串

要销毁其执行上下文的集群的ID。

contextId

类型:字符串

要销毁的执行上下文的ID。

响应模式

id

类型:字符串

执行上下文的ID。

运行命令

方法和路径:

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

例子

要求:

curl—netrc—请求POSThttps:// < 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—gethttps:// < databricks-instance > / api / 1.2 /命令/状态——数据clusterId1234567890 - span123——数据contextId1234567890123456789——数据commandId1234年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模式而不是Hive类型的字符串表示。

    类型:真正的/

文本

  • 数据:文本。

    类型:字符串

取消命令

方法和路径:

POST / api / 1.2 /命令/取消

例子

要求:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /命令/取消——数据clusterId1234567890 - span123——数据contextId1234567890123456789——数据commandId1234年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。

获取集群的库列表

重要的

该操作不建议使用。使用集群状态在Libraries API中进行操作。

方法和路径:

得到/ api / 1.2 /图书馆/列表

例子

要求:

Curl—netrc—gethttps:// < databricks-instance > / api / 1.2 /图书馆/列表——数据clusterId1234567890 - span123

请求模式

clusterId

类型:字符串

集群ID。

响应模式

对象数组,每个对象表示一个库的信息,如下所示:

的名字

类型:字符串

图书馆的名称。

状态

类型:字符串

库的状态。之一:

  • LibraryError

  • LibraryLoaded

  • LibraryPending

将库上传到集群

重要的

该操作不建议使用。使用安装在Libraries API中进行操作。

方法和路径:

帖子/ api / 1.2 /图书馆/上传

请求模式

clusterId

类型:字符串

要上传库到的集群的ID。

的名字

类型:字符串

图书馆的名称。

语言

类型:字符串

图书馆的语言。

uri

类型:字符串

库的URI。

该方案可以是文件http,或https

响应模式

关于上传库的信息。

语言

类型:字符串

图书馆的语言。

uri

类型:字符串

库的URI。

附加的例子

下面的其他示例提供了可以使用的命令旋度或者使用您选择的编程语言中的HTTP库进行调整。

创建执行上下文

在指定的集群上为给定的编程语言创建一个执行上下文:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /环境/创建——头“application / json内容类型:——数据'{"language": "scala", "clusterId": "1234-567890-span123"}'

获取有关执行上下文的信息:

Curl—netrc—gethttps:// < databricks-instance > / api / 1.2 /环境/状态——数据' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 '

删除执行上下文:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /环境/销毁——头“application / json内容类型:——数据'{" contexttid ": "1234567890123456789", "clusterId": "1234-567890-span123"}'

运行命令

已知限制:不支持命令执行运行%

执行命令字符串:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /命令/执行——头“application / json内容类型:——数据{"language": "scala", "clusterId": "1234-567890-span123", " contexttid ": "1234567890123456789", "command": "sc.parallelize(1 to 10). "收集“}”

运行一个文件:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /命令/执行——头“内容类型:多部分/格式”——形式语言python——形式clusterId1234567890 - span123——形式contextId1234567890123456789——形式命令@myfile.py

显示命令的状态和结果:

Curl—netrc—gethttps:// < databricks-instance > / api / 1.2 /命令/状态——数据' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 &commandid = 1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”

取消命令:

curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /命令/取消——数据' clusterId = 1234 - 567890 span123&contextid = 1234567890123456789 &commandid = 1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”

上传并运行Spark JAR

上传JAR

使用REST API(最新)上传JAR并将其附加到集群。

运行JAR

  1. 创建一个执行上下文。

    curl—netrc—请求POSThttps:// < databricks-instance > / api / 1.2 /环境/创建——数据“语言= scala&clusterId = 1234 - 567890 span123”
    “id”“1234567890123456789”
  2. 执行一个使用JAR的命令。

    curl—netrc—请求POSThttps:// < 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. 检查命令的状态。如果您正在运行一个较长的Spark作业,它可能不会立即返回。

    curl——netrc“https:// < databricks-instance > / api / 1.2 /命令/地位?clusterId=1234567890 - span123&contextId=1234567890123456789&commandId=1234年ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890'
    “id”“1234 ab56 - 7890 - 1 - cde - 234 f - 5 - abcdef67890”“结果”“数据”内容大小平均:1234,最小:1234,最大:1234“resultType”“文本”},“状态”“完成”

    允许的值resultType包括:

    • 错误

    • 图像

    • 图片

    • 表格

    • 文本