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

2024-04-30

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

我们想要实现的是确保我们的集群在开始数据处理之前启动(预热)。因此,我们正在探索从 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的启动命令 https://docs.databricks.com/dev-tools/api/latest/clusters.html#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 state:

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']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Databricks Notebook 中调用 Cluster API 并启动集群? 的相关文章

随机推荐