目前,我们主要使用python/pyspark在azure databricks中使用一堆笔记本来处理数据。
我们想要实现的是确保在启动数据处理之前启动(预热)我们的集群。因此,我们正在探索从databricks notebooks中访问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 notebook中调用ClusterAPI,或者调用curl命令,这是如何实现的?
发布于 2021-09-05 00:39:36
错误很可能来自不正确配置的凭据。
与其使用命令行应用程序,不如使用Start command of Clusters REST API。这可以用下面这样的方法来完成:
import requests
ctx = dbutils.notebook.entry_point.getDbutils().notebook().getContext()
host_name = ctx.tags().get("browserHostName").get()
host_token = ctx.apiToken().get()
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']
https://stackoverflow.com/questions/69013137
复制相似问题