调用Databricks reset_job方法时遇请求JSON格式错误问题
问题解决:Databricks reset_job 报 MALFORMED_REQUEST 错误
错误原因
- 参数类型错误:
reset_job方法接收的是Python字典(map),而非序列化后的JSON字符串。你用json.dumps(job)将字典转为字符串,导致API无法正确解析请求体。 - 包含冗余字段:从
list_jobs获取的job对象包含creator_user_name、created_time等非必需字段,这些字段不符合reset_job接口的请求参数规范。
修正后的代码
... api_client = ApiClient(host=databricks_host, token=databricks_token) jobs = JobsApi(api_client) job_list = jobs.list_jobs()["jobs"] job_name = "DP DataSync Job" result_list = list( filter( lambda job: job['settings']['name'] == job_name, job_list) ) job = result_list[0] job_id = job["job_id"] # 仅保留reset_job所需字段:job_id和修改后的settings reset_payload = { "job_id": job_id, "settings": job["settings"] } reset_payload["settings"]["schedule"]["pause_status"] = "UNPAUSED" print(f"Resetting job with id: {job_id}") # 直接传入Python字典,无需手动序列化为JSON字符串 jobs.reset_job(reset_payload)
关键说明
reset_job接口仅需要job_id和settings两个核心字段,多余字段会触发请求格式校验失败。- Databricks CLI的JobsApi方法内部会自动完成字典到JSON的序列化操作,无需手动调用
json.dumps。
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

