使用DBFS API 2.0和PowerShell上傳大文件

使用PowerShell和DBFS API將大文件上傳到Databricks工作區。

寫的ravirahul.padmanabhan

最後發布日期:2022年9月27日

使用Databricks REST API以編程方式與集群交互是一種利用腳本簡化工作流程的好方法。

該API可以使用各種工具調用,包括PowerShell。在本文中,我們將查看一個DBFS示例然後向您展示如何使用PowerShell執行相同的命令。

DBFS API 2.0命令(AWS|Azure)如果數據以字符串形式傳遞,則限製可以使用contents參數傳遞的數據量為1mb。如果數據作為文件傳遞,相同的命令可以傳遞2gb。它主要用於流上傳,但也可以用作方便的數據上傳的單一調用。

旋度的例子

本例使用curl向API發送一個簡單的多部分表單post請求,以上傳一個大小為2gb的文件。

將<>中的所有值替換為適合您的環境的值。

刪除

信息

要獲得您的工作區URL,請回顧工作區實例名、url和idAWS|Azure).

檢查生成一個個人訪問令牌AWS|Azure)文檔,詳細了解如何創建個人訪問令牌以與REST api一起使用。

#參數databricks_workspace_url="< databricks_workspace -url>" personal_access_token="" local_file_path="" # ex: /Users/foo/Desktop/file_to_upload.png dbfs_file_path="" # ex: /tmp/file_to_upload.png overwrite_file="" curl——location——request POST https://${databricks_workspace_url}/api/2.0/dbfs/put \——header "授權:\——form contents=@${local_file_path} \——form path=${dbfs_file_path} \——form overwrite=${overwrite_file}

PowerShell的例子

這個PowerShell示例比curl示例長,但它向API發送了相同的多部分表單post請求。

下麵的腳本可以在任何環境中使用支持PowerShell

要運行PowerShell腳本,必須:

  1. 中的所有值替換<>為您的環境提供適當的值。回顧DBFS API 2.0文檔獲取更多信息。
  2. 將腳本保存為.ps1文件。例如,你可以調用它upload_large_file_to_dbfs.ps1
  3. 在PowerShell中執行腳本。/ upload_large_file_to_dbfs.ps1在提示符處。
################################################## 參數$ DBX_HOST = " < databricks-workspace-url > " $ DBX_TOKEN = " < personal-access-token >“$ FILE_TO_UPLOAD = " < local_file_path >“#交貨:/用戶/ foo /桌麵/ file_to_upload.png $ DBFS_PATH = " < dbfs_file_path >“#交貨:/ tmp / file_to_upload.png OVERWRITE_FILE美元= " <真|假 >" ################################################## # 配置身份驗證頭=新對象”System.Collections.Generic美元。詞典[[String], [String]]”美元的頭。Add("Authorization", " holder " + $DBX_TOKEN) $multipartContent = [System.Net.Http.MultipartFormDataContent]::new() #本地文件路徑$FileStream = [System.IO. txt]。FileStream]::new($FILE_TO_UPLOAD, [System.IO.FileMode]::Open) $fileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data") $fileHeader。Name = $(Split-Path $FILE_TO_UPLOAD -leaf) $fileHeader。FileName = $(Split-Path $FILE_TO_UPLOAD -leaf) $fileContent = [System.Net.Http.StreamContent]:::new($FileStream) $fileContent. headers。ContentDisposition = $fileHeader $fileContent.Headers。ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse("text/plain") $multipartContent.Add($fileContent) # DBFS path $stringHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data") $stringHeader。Name = "path" $stringContent = [System.Net.Http.StringContent]::new($DBFS_PATH) $stringContent. headers。ContentDisposition = $stringHeader $multipartContent.Add($stringContent) #文件覆蓋配置$stringHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new("form-data") $stringHeader。Name = "overwrite" $stringContent = [System.Net.Http.StringContent]::new($OVERWRITE_FILE) $stringContent. headers。content = $stringHeader $multipartContent. add ($stringContent) # Call Databricks DBFS REST API $body = $multipartContent $uri = 'https://' + $DBX_HOST + '/ API /2.0/ DBFS /put' $response = Invoke-RestMethod $uri -Method 'POST' -Headers $headers -Body $body $response | converto - json
刪除

信息

您可以在Linux和OS X以及Windows中使用PowerShell腳本。在這些環境中,運行PowerShell腳本的命令略有不同。如果您試圖在Windows以外的平台上運行腳本,請參考PowerShell文檔。Beplay体育安卓版本