DBFS API 2.0

DBFS API是一個Databricks API,它使與各種數據源的交互變得簡單,而不必在每次讀取文件時都包含您的憑據。看到什麼是數據庫文件係統(DBFS)?獲取更多信息。有關易於使用的DBFS API命令行客戶端,請參見磚CLI

請注意

為了確保高負載下的高服務質量,Databricks現在對DBFS API調用實施API速率限製。為每個工作空間設置限製,以確保公平使用和高可用性。自動重試可以使用Databricks CLI 0.12.0及以上版本。我們建議所有客戶切換到最新的beplay体育app下载地址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://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.com/api/2.0/dbfs/delete——數據'{"path": "/tmp/HelloWorld.txt"}'
{}

請求結構

字段名

類型

描述

路徑

字符串

要刪除的文件或目錄的路徑。路徑應該是絕對的DBFS路徑(例如。/ mnt / foo /).該字段為必填項。

遞歸

保齡球

是否遞歸刪除目錄的內容。可以在不提供遞歸標誌的情況下刪除空目錄。

獲得地位

端點

HTTP方法

2.0 / dbfs /獲得狀態

得到

獲取文件或目錄的文件信息。如果文件或目錄不存在,則此調用將拋出異常RESOURCE_DOES_NOT_EXIST

例子

—netrc -X GEThttps://dbc-a1b2345c-d6e7.cloud.www.eheci.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毫秒為單位,修改了文件或目錄。

請注意:當請求的是AWS S3上的目錄時,該值為0

列表

端點

HTTP方法

2.0 / dbfs /列表

得到

列出目錄的內容或文件的詳細信息。如果文件或目錄不存在,則此調用將拋出異常RESOURCE_DOES_NOT_EXIST

當調用列表在大型目錄中,列表操作將在大約60秒後超時。我們強烈建議使用列表僅在包含小於10K文件的目錄上,並且不建議對列出超過10K文件的操作使用DBFS REST API。方法在集群上下文中執行此類操作文件係統實用程序(dbutls .fs),它提供了相同的功能而沒有超時。

例子

—netrc -X GEThttps://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.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在本地目錄中/ tmp / HelloWorld.txt在實例中:

—netrc -X POSThttps://dbc-a1b2345c-d6e7.cloud.www.eheci.com/api/2.0/dbfs/put——形式內容@HelloWorld.txt——形式路徑“/ tmp / HelloWorld.txt”——形式覆蓋真正的

上傳內容你好,世界!作為base64編碼的字符串:

—netrc -X POSThttps://dbc-a1b2345c-d6e7.cloud.www.eheci.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://dbc-a1b2345c-d6e7.cloud.www.eheci.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毫秒為單位,修改了文件或目錄。

請注意:當請求的是AWS S3上的目錄時,該值為0