如何调用集群API并从Databricks Notebook中启动集群?



目前我们主要使用python/pyspark在azure数据库中使用一堆笔记本来处理我们的数据。

我们想要实现的是确保我们的集群在启动数据处理之前已经启动(预热)。因此,我们正在探索从databricks笔记本中访问Cluster API的方法。

到目前为止,我们尝试运行以下命令:

import subprocess
cluster_id = "XXXX-XXXXXX-XXXXXXX"
subprocess.run(
[f'databricks clusters start --cluster-id "{cluster_id}"'], shell=True
)

返回下面,之后什么都没有发生。

集群未启动。
CompletedProcess(args=['databricks clusters start --cluster-id "0824-153237-ovals313"'], returncode=127)

是否有任何方便和智能的方法从databricks笔记本中调用ClusterAPI,或者调用curl命令,这是如何实现的?

很可能是凭证配置错误。

与其使用命令行应用程序,不如使用集群REST API的Start命令。可以这样做:

import requests
ctx = dbutils.notebook.entry_point.getDbutils().notebook().getContext()
host_name = ctx.tags().get("browserHostName").get()
host_token = "your_PAT_token"
cluster_id = "some_id" # put your cluster ID here
requests.post(
f'https://{host_name}/api/2.0/clusters/get',
json = {'cluster_id': cluster_id},
headers={'Authorization': f'Bearer {host_token}'}
)

,然后您可以使用Get端点监视状态,直到它进入RUNNING状态:

response = requests.get(
f'https://{host_name}/api/2.0/clusters/get?cluster_id={cluster_id}',
headers={'Authorization': f'Bearer {host_token}'}
).json()
status = response['state']

最新更新