Databricks Jobs提交失败:JSON格式错误如何修正?
解决Databricks Jobs JSON提交格式错误问题
错误原因分析
你遇到的两个错误均为JSON格式不合法导致:JSON要求对象键必须用双引号包裹,且字符串转义规则严格。出现'r'或't'的报错,大概率是PowerShell处理JSON字符串时,引号未正确转义,或是变量插入后破坏了JSON结构(比如变量值包含未转义的特殊字符)。
正确的JSON模板(适配Databricks CLI v0.221.0)
以下是提交Notebook任务的标准合法JSON格式,可基于此调整:
{ "name": "Run-Notebook-Job", "tasks": [ { "task_key": "Notebook-Task", "notebook_task": { "notebook_path": "/Workspace/Path/To/Your/Notebook", "base_parameters": { "param1": "value1", "param2": "value2" } }, "new_cluster": { "spark_version": "13.3.x-scala2.12", "node_type_id": "Standard_DS3_v2", "num_workers": 1 } } ] }
PowerShell中提交的关键注意事项
引号转义处理
在PowerShell中,推荐用单引号包裹整个JSON字符串,避免自动变量解析和双引号转义问题:$jsonPayload = '{ "name": "Run-Notebook-Job", "tasks": [ { "task_key": "Notebook-Task", "notebook_task": { "notebook_path": "/Workspace/Path/To/Your/Notebook", "base_parameters": { "param1": "value1", "param2": "value2" } }, "new_cluster": { "spark_version": "13.3.x-scala2.12", "node_type_id": "Standard_DS3_v2", "num_workers": 1 } } ] }' # 提交任务 databricks jobs create --json $jsonPayload变量插入的正确方式
若需插入PowerShell变量,不要直接拼接字符串,应先构建PS对象再转为JSON,自动处理格式问题:$notebookPath = "/Workspace/My/Target/Notebook" $clusterNodeType = "Standard_DS3_v2" $jobDefinition = [PSCustomObject]@{ name = "Run-Notebook-Job" tasks = @( [PSCustomObject]@{ task_key = "Notebook-Task" notebook_task = [PSCustomObject]@{ notebook_path = $notebookPath base_parameters = [PSCustomObject]@{ env = "production" } } new_cluster = [PSCustomObject]@{ spark_version = "13.3.x-scala2.12" node_type_id = $clusterNodeType num_workers = 1 } } ) } $jsonPayload = $jobDefinition | ConvertTo-Json -Depth 10 databricks jobs create --json $jsonPayload提前验证JSON合法性
提交前可通过以下命令验证JSON格式是否正确,避免无效提交:$jsonPayload | ConvertFrom-Json -ErrorAction Stop无报错则说明JSON格式合法。
常见排查点
- 确认所有对象键均用双引号包裹(JSON不允许单引号作为键的包裹符)
- 检查字符串中的特殊字符(如引号、反斜杠)是否已正确转义
- 确保变量值中无意外换行或控制字符,这类字符会破坏JSON结构
内容的提问来源于stack exchange,提问作者DanteeChaos
相关产品推荐
相关产品推荐

