我正在使用Databricks Resi API 在现有集群中创建一个包含notebook_task 的作业,并获取job_id 作为返回。 然后我调用 run-now api 来触发作业。 在此步骤中,我想通过笔记本参数发送一个列表作为参数,这会抛出一个错误,指出“字段值预期为非数组”。
有什么方法可以将列表作为参数发送给作业?
我也尝试在 base_params 中发送列表参数,但出现相同的错误。
user_json={
"name": job_name,
"existing_cluster_id": cluster_id,
"notebook_task": {
"notebook_path": notebook_path
},
"email_notifications":{
"on_failure":[email_id]
},
"max_retries": 0,
"timeout_seconds": 3600
}
response=requests.post('https://<databricks_uri>/2.0/jobs/create',headers=head,json=user_json,timeout=5, verify=False)
job_id=response.json()['job_id']
json_job={"job_id":job_id,"notebook_params":{"name":"john doe","my_list":my_list}}
response = requests.post('https://<databricks_uri>/2.0/jobs/run-now', headers=head, json=json_job, timeout=200, verify=False)
最佳答案
尚未找到任何 native 解决方案,但我的解决方案是将列表作为字符串传递并在另一端解析它:
json_job={"job_id":job_id,
"notebook_params":{
"name":"john doe",
"my_list":"spam,eggs"
}
}
然后在数据 block 中:
my_list=dbutils.widgets.get("my_list")
my_list=my_list.split(",")
适当注意特殊字符或例如转换为数字类型。
如果列表中的对象更为重要,那么在运行作业之前使用 CLI 或 API 将它们作为文件发送到 dbfs 可能是另一种值得探索的选择。
关于rest - 如何在databricks笔记本任务中发送列表作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56485226/