DBFS API 2.0

DBFS API是一个Databricks API,它使与各种数据源的交互变得简单,而不必在每次读取文件时都包含您的凭据。看到什么是数据库文件系统(DBFS)?获取更多信息。有关易于使用的DBFS API命令行客户端,请参见数据库命令行设置和文档

请注意

为了确保高负载下的高服务质量,Databricks现在对DBFS API调用实施API速率限制。为每个工作空间设置限制,以确保公平使用和高可用性。自动重试可以使用Databricks CLI 0.12.0及以上版本。我们建议所有客户切换到最新的Databricks CLI版本。

重要的

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

添加块

端点

HTTP方法

2.0 / dbfs / addblock

帖子

将数据块附加到输入句柄指定的流中。如果句柄不存在,此调用将抛出异常RESOURCE_DOES_NOT_EXIST.如果数据块超过1mb,此调用将抛出异常MAX_BLOCK_SIZE_EXCEEDED.文件上传的典型工作流是:

  1. 调用创建掌握要领。

  2. 制作一个或多个addblock使用您拥有的句柄调用。

  3. 调用关闭用你的手柄。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/add-block——数据'{"data": "SGVsbG8sIFdvcmxkIQ==", "handle": 1234567890123456}'
{}

请求结构

字段名

类型

描述

处理

INT64

开敞溪流的手柄该字段为必填项。

数据

字节

要附加到流中的base64编码的数据。该字段是必需的,限制为1mb。

关闭

端点

HTTP方法

2.0 / dbfs /关闭

帖子

关闭输入句柄指定的流。如果句柄不存在,则此调用抛出异常RESOURCE_DOES_NOT_EXIST.文件上传的典型工作流是:

  1. 调用创建掌握要领。

  2. 制作一个或多个addblock使用您拥有的句柄调用。

  3. 调用关闭用你的手柄。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/close——数据'{"handle": 1234567890123456}'

如果调用成功,则不显示任何输出。

请求结构

字段名

类型

描述

处理

INT64

开敞溪流的手柄该字段为必填项。

创建

端点

HTTP方法

2.0 / dbfs /创建

帖子

打开流以写入文件并返回此流的句柄。此句柄有10分钟的空闲超时。如果文件或目录已存在于给定路径和覆盖设置为false时,此调用抛出异常RESOURCE_ALREADY_EXISTS.文件上传的典型工作流是:

  1. 调用创建掌握要领。

  2. 制作一个或多个addblock使用您拥有的句柄调用。

  3. 调用关闭用你的手柄。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/create——数据'{"path": "/tmp/HelloWorld.txt", " override ": true}'
“处理”1234567890123456

请求结构

字段名

类型

描述

路径

字符串

新文件的路径。路径应该是绝对的DBFS路径(例如/ mnt / my-file.txt).该字段为必填项。

覆盖

保龄球

指定是否覆盖现有文件或多个文件的标志。

响应结构

字段名

类型

描述

处理

INT64

句柄,该句柄随后应传递到addblock而且关闭通过流写入文件时调用。

删除

端点

HTTP方法

2.0 / dbfs /删除

帖子

删除文件或目录(可选地递归删除目录中的所有文件)。这个调用会抛出一个异常IO_ERROR如果路径是非空目录且递归设置为false或其他类似错误。

当删除大量文件时,删除操作以增量方式进行。调用在大约45秒后返回一个响应,其中包含一条错误消息(503 Service Unavailable),要求您重新调用删除操作,直到完全删除目录结构。例如:

“error_code”“PARTIAL_DELETE”“消息”"请求的操作已删除324个文件。还有更多剩余的文件。你必须再次请求删除更多。”

对于删除超过10K文件的操作,我们不建议使用DBFS REST API,但建议您在集群上下文中执行此类操作,使用文件系统实用程序(dbutls .fs)dbutils.fs涵盖了DBFS REST API的功能范围,但来自笔记本。使用笔记本运行这样的操作提供了更好的控制和可管理性,比如选择性删除,以及自动化定期删除作业的可能性。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/delete——数据'{"path": "/tmp/HelloWorld.txt"}'
{}

请求结构

字段名

类型

描述

路径

字符串

要删除的文件或目录的路径。路径应该是绝对的DBFS路径(例如。/ mnt / foo /).该字段为必填项。

递归

保龄球

是否递归删除目录的内容。可以在不提供递归标志的情况下删除空目录。

获得地位

端点

HTTP方法

2.0 / dbfs /获得状态

得到

获取文件或目录的文件信息。如果文件或目录不存在,则此调用将抛出异常RESOURCE_DOES_NOT_EXIST

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/get-status——数据'{"path": "/tmp/HelloWorld.txt"}'|金桥。
“路径”“/ tmp / HelloWorld.txt”“is_dir”“file_size”13“modification_time”1622054945000

请求结构

字段名

类型

描述

路径

字符串

文件或目录的路径。该路径应该是绝对DBFS路径(例如,/ mnt /文件夹/).该字段为必填项。

响应结构

字段名

类型

描述

路径

字符串

文件或目录的路径。

is_dir

保龄球

路径是否为目录。

file_size

INT64

文件的长度(以字节为单位),如果路径是目录则为0。

modification_time

INT64

最后一次,以epoch毫秒为单位,修改了文件或目录。

列表

端点

HTTP方法

2.0 / dbfs /列表

得到

列出目录的内容或文件的详细信息。如果文件或目录不存在,则此调用将抛出异常RESOURCE_DOES_NOT_EXIST

当调用列表在大型目录中,列表操作将在大约60秒后超时。我们强烈建议使用列表仅在包含小于10K文件的目录上,并且不建议对列出超过10K文件的操作使用DBFS REST API。方法在集群上下文中执行此类操作文件系统实用程序(dbutls .fs),它提供了相同的功能而没有超时。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/list——数据'{"path": "/tmp"}'|金桥。
“文件”“路径”“/ tmp / HelloWorld.txt”“is_dir”“file_size”13“modification_time”1622054945000},“…”

请求结构

字段名

类型

描述

路径

字符串

文件或目录的路径。路径应该是绝对的DBFS路径(例如。/ mnt / foo /).该字段为必填项。

响应结构

字段名

类型

描述

文件

的数组FileInfo

描述目录或文件内容的FileInfo列表。

mkdir

端点

HTTP方法

2.0 / dbfs / mkdir

帖子

创建给定目录和必要的父目录(如果它们不存在)。如果在输入路径的任何前缀处存在文件(而不是目录),则此调用将抛出异常RESOURCE_ALREADY_EXISTS.如果此操作失败,则可能已经成功创建了一些必要的父目录。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/mkdirs——数据'{"path": "/tmp/my-new-dir"}'
{}

请求结构

字段名

类型

描述

路径

字符串

新目录的路径。该路径应该是绝对DBFS路径(例如,/ mnt /文件夹/).该字段为必填项。

移动

端点

HTTP方法

2.0 / dbfs /移动

帖子

将文件从DBFS中的一个位置移动到另一个位置。如果源文件不存在,则此调用将抛出异常RESOURCE_DOES_NOT_EXIST.如果目标路径中已经存在文件,则此调用将抛出异常RESOURCE_ALREADY_EXISTS.如果给定的源路径是一个目录,这个调用总是递归地移动所有文件。

当移动大量文件时,API调用将在大约60秒后超时,可能导致部分移动的数据。因此,对于移动超过10K文件的操作,我们强烈反对使用DBFS REST API。方法在集群上下文中执行此类操作文件系统实用程序(dbutls .fs)从笔记本电脑,它提供了相同的功能,没有超时。

例子

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/move——数据'{"source_path": "/tmp/HelloWorld.txt", "destination_path": "/tmp/my-new-dir/HelloWorld.txt"}'
{}

请求结构

字段名

类型

描述

source_path

字符串

文件或目录的源路径。该路径应该是绝对DBFS路径(例如,/ mnt / my-source-folder /).该字段为必填项。

destination_path

字符串

文件或目录的目标路径。该路径应该是绝对DBFS路径(例如,/ mnt / my-destination-folder /).该字段为必填项。

端点

HTTP方法

2.0 / dbfs /把

帖子

通过使用多部分表单上传文件。它主要用于流上传,但也可以用作方便的数据上传的单一调用。

类可以传递的数据量内容参数如果以字符串形式指定,则限制为1mb (MAX_BLOCK_SIZE_EXCEEDED如果超过则抛出)和2 GB的文件。

例子

上传名为HelloWorld.txt在当前目录下:

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/put——形式内容@HelloWorld.txt——形式路径“/ tmp / HelloWorld.txt”——形式覆盖真正的

上传内容你好,世界!作为base64编码的字符串:

—netrc -X POSThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/put——数据'{"path": "/tmp/HelloWorld.txt", "contents": "SGVsbG8sIFdvcmxkIQ==", " override ": true}'
{}

请求结构

字段名

类型

描述

路径

字符串

新文件的路径。路径应该是绝对的DBFS路径(例如。/ mnt / foo /).该字段为必填项。

内容

字节

此参数可能不存在,而是使用一个已发布的文件。

覆盖

保龄球

指定是否覆盖现有文件的标志。

端点

HTTP方法

2.0 / dbfs /阅读

得到

返回一个文件的内容。如果文件不存在,此调用将抛出异常RESOURCE_DOES_NOT_EXIST.如果路径是目录,读取长度为负,或者偏移量为负,则此调用将引发异常INVALID_PARAMETER_VALUE.如果读取长度超过1 MB,此调用将抛出异常MAX_READ_SIZE_EXCEEDED.如果抵消+长度超过文件中的字节数,读取内容直到文件结束。

例子

假设指定文件的内容是字符串你好,世界!.一个抵消1和一个长度8返回base64编码的字符串ZWxsbywgV28 =,解码后是嗨,我们

—netrc -X GEThttps://1234567890123456.7.gcp.www.neidfyre.com/api/2.0/dbfs/read——数据”{“路径”:“/ tmp / HelloWorld.txt”、“抵消”:1、“长度”:8}”|金桥。
“bytes_read”8“数据”" ZWxsbywgV28 = "

请求结构

字段名

类型

描述

路径

字符串

要读取的文件路径。路径应该是绝对的DBFS路径(例如。/ mnt / foo /).该字段为必填项。

抵消

INT64

以字节为单位读取的偏移量。

长度

INT64

从偏移量开始读取的字节数。它的限制为1 MB,默认值为0.5 MB。

响应结构

字段名

类型

描述

bytes_read

INT64

读取的字节数(如果我们点击文件的末尾,则可能小于长度)。这是指在未编码版本中读取的字节数(响应数据是base64编码的)。

数据

字节

读取base64编码的文件内容。

数据结构

本节:

FileInfo

文件或目录的属性。

字段名

类型

描述

路径

字符串

文件或目录的路径。

is_dir

保龄球

路径是否为目录。

file_size

INT64

文件的长度(以字节为单位),如果路径是目录则为0。

modification_time

INT64

最后一次,以epoch毫秒为单位,修改了文件或目录。