You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将DevOps仓库文件导入Databricks工作区API报错求助

解决Databricks Workspace Import API的"无效zip文件"错误

问题分析

调用Databricks Workspace Import API导入pyodbc.sh脚本时出现INVALID_PARAMETER_VALUE错误,提示zip文件无效,核心原因是API误将脚本内容识别为zip格式,或参数配置不符合单个SOURCE文件的导入规范。

修复步骤

1. 确保目标父目录存在

先确认/Workspace/Init目录已在Databricks工作区创建,若不存在则先调用API创建:

$createDirUrl = "$databricksInstance/api/2.0/workspace/mkdirs"
$dirBody = @{
    path = '/Workspace/Init'
} | ConvertTo-Json

Invoke-RestMethod -Uri $createDirUrl -Method POST -Headers @{Authorization = $InternalBearerToken } -Body $dirBody -ContentType "application/json"

2. 调整API请求参数

修改请求体,添加language字段明确脚本类型为BASH,同时修正参数配置:

$body = @{
    path = $workspacePath
    content = $fileBase64
    format = "SOURCE"
    language = "BASH"  # 明确指定脚本语言
    overwrite = $true  # 按需设置是否覆盖现有文件
} | ConvertTo-Json

3. 验证Base64编码正确性

确保文件内容的Base64编码无异常,可重新执行编码操作:

$fileContent = Get-Content -Path $localFilePath -Raw -Encoding Byte
$fileBase64 = [Convert]::ToBase64String($fileContent)

4. 完整修复后代码

$initFolder = Join-Path -Path $PSScriptRoot -ChildPath 'InitScripts'
$localFilePath = Join-Path -Path $initFolder -ChildPath 'pyodbc.sh'
$databricksInstance = "https://adb-88888888888888.88.azuredatabricks.net"
$workspaceDirPath = '/Workspace/Init'
$workspaceFilePath = Join-Path -Path $workspaceDirPath -ChildPath 'pyodbc.sh'

# 创建目标目录
$createDirUrl = "$databricksInstance/api/2.0/workspace/mkdirs"
$dirBody = @{ path = $workspaceDirPath } | ConvertTo-Json
Invoke-RestMethod -Uri $createDirUrl -Method POST -Headers @{Authorization = $InternalBearerToken } -Body $dirBody -ContentType "application/json"

# 读取并编码文件内容
$fileContent = Get-Content -Path $localFilePath -Raw -Encoding Byte
$fileBase64 = [Convert]::ToBase64String($fileContent)

# 调用导入API
$apiUrl = "$databricksInstance/api/2.0/workspace/import"
$body = @{
    path = $workspaceFilePath
    content = $fileBase64
    format = "SOURCE"
    language = "BASH"
    overwrite = $true
} | ConvertTo-Json

$response = Invoke-RestMethod -Uri $apiUrl -Method POST -Headers @{Authorization = $InternalBearerToken } -Body $body -ContentType "application/json"
Write-Output "初始化脚本写入完成"
$response

额外说明

  • 导入代码类文件(如.sh、.py)时,format="SOURCE"必须配合language参数明确文件类型,否则API无法正确识别格式,会误判为zip包。
  • 若仍有问题,可尝试将format改为"TEXT",适用于纯文本文件导入场景。

内容的提问来源于stack exchange,提问作者Greencolor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:55:14