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

PowerShell和DBFS API使用大文件上传你的砖工作区。

写的ravirahul.padmanabhan

去年发表在:2022年9月27日

使用砖REST API以编程方式与集群交互可以是一个伟大的方式来简化工作流程和脚本。

API可以调用各种工具,包括PowerShell。在本文中,我们将看看DBFS一个例子使用curl命令,然后向您展示如何使用PowerShell执行相同的命令。

DBFS API 2.0命令(AWS|Azure)限制的数据量可以使用内容参数传递给1 MB如果数据作为字符串传递。相同的命令可以通过2 GB的数据作为一个文件传递。它主要用于流媒体上传,但是也可以使用作为一个方便的单一数据上传。

旋度的例子

这个示例使用curl将一个简单的多部分表单post请求发送到API来上传文件到2 GB大小的。

< >中所有的值替换为适当的值对于您的环境。

删除

信息

得到您的工作区URL,审查工作区实例名、url和id(AWS|Azure)。

检查生成一个个人访问令牌(AWS|Azure)如何创建一个文档细节的个人使用REST api访问令牌。

#参数databricks_workspace_url = " < databricks-workspace-url > " personal_access_token = < personal-access-token >“local_file_path = " < local_file_path > #交货:/用户/ foo /桌面/ file_to_upload。png dbfs_file_path = " < dbfs_file_path > " #交货:/ tmp / file_to_upload。png overwrite_file = " <真|假> " curl——位置请求发布https:// $ {databricks_workspace_url} / api / 2.0 / dbfs /把\——头”授权:无记名$ {personal_access_token} " \,形式内容= @ $ {local_file_path} \——形成路径= $ {dbfs_file_path} \形式覆盖= $ {overwrite_file}

PowerShell的例子

这个PowerShell的例子是比旋度的例子,但它发送相同的多部分表单post请求API。

下面的脚本可以用在任何环境中PowerShell是支持

你必须运行PowerShell脚本:

  1. 替换所有的值< >用适当的值是否适合您的环境。2.0审查DBFS API文档的更多信息。
  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美元= " <真|假>“# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # header =新对象”System.Collections.Generic美元配置身份验证。词典[[String], [String]]”美元的头。添加(“授权”,“持票人”+ DBX_TOKEN美元)$ multipartContent = [System.Net.Http.MultipartFormDataContent]::新()# $ = FileStream[先本地文件路径。文件流)::新(FILE_TO_UPLOAD美元[System.IO.FileMode]::打开)$ fileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::新(“格式”)fileHeader美元。Name = $(美元Split-Path FILE_TO_UPLOAD叶)fileHeader美元。文件名= $(美元Split-Path FILE_TO_UPLOAD叶)$ fileContent = [System.Net.Http.StreamContent]::新()FileStream fileContent.Headers美元。ContentDisposition = fileHeader fileContent.Headers美元。ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::解析(" text / plain”) multipartContent.Add美元($ fileContent) # $ stringHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]: DBFS路径:新(“格式”)stringHeader美元。Name = "路径" $ stringContent = [System.Net.Http.StringContent]::新(DBFS_PATH美元)stringContent.Headers美元。ContentDisposition = stringHeader multipartContent.Add美元($ stringContent) #文件覆盖配置$ stringHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::新(“格式”)stringHeader美元。Name = "改写" $ stringContent = [System.Net.Http.StringContent]::新(OVERWRITE_FILE美元)stringContent.Headers美元。ContentDisposition = stringHeader multipartContent.Add美元($ stringContent) #叫砖DBFS REST API的身体=美元multipartContent uri = " https:// " + DBX_HOST美元+ / API / 2.0 / DBFS /把的响应= Invoke-RestMethod uri美元方法“POST”标题头身体身体反应美元美元| ConvertTo-Json
删除

信息

您可以使用PowerShell脚本在Linux和OS X Windows。命令PowerShell脚本运行在这些环境中略有不同。请参阅PowerShell文档如果你正试图运行脚本窗口以外的一个平台。bob体育客户端下载

这篇文章有用吗?