使用Databricks REST API以編程方式與集群交互是一種利用腳本簡化工作流程的好方法。
該API可以使用各種工具調用,包括PowerShell。在本文中,我們將查看一個DBFS示例把然後向您展示如何使用PowerShell執行相同的命令。
DBFS API 2.0把命令(AWS|Azure)如果數據以字符串形式傳遞,則限製可以使用contents參數傳遞的數據量為1mb。如果數據作為文件傳遞,相同的命令可以傳遞2gb。它主要用於流上傳,但也可以用作方便的數據上傳的單一調用。
旋度的例子
本例使用curl向API發送一個簡單的多部分表單post請求,以上傳一個大小為2gb的文件。
將<>中的所有值替換為適合您的環境的值。
#參數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腳本,必須:
- 中的所有值替換<>為您的環境提供適當的值。回顧DBFS API 2.0把文檔獲取更多信息。
- 將腳本保存為.ps1文件。例如,你可以調用它upload_large_file_to_dbfs.ps1.
- 在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