首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Databricks Notebook中调用集群API并启动集群?

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

Stack Overflow用户
提问于 2021-09-01 03:46:35
回答 1查看 567关注 0票数 1

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

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

到目前为止,我们尝试运行以下代码:

代码语言:javascript
运行
AI代码解释
复制
import subprocess
cluster_id = "XXXX-XXXXXX-XXXXXXX"
subprocess.run(
    [f'databricks clusters start --cluster-id "{cluster_id}"'], shell=True
)

然而,它返回到下面,之后什么也不会发生。群集未启动。

代码语言:javascript
运行
AI代码解释
复制
CompletedProcess(args=['databricks clusters start --cluster-id "0824-153237-ovals313"'], returncode=127)

有没有什么方便和智能的方法可以从databricks notebook中调用ClusterAPI,或者调用curl命令,这是如何实现的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-05 00:39:36

错误很可能来自不正确配置的凭据。

与其使用命令行应用程序,不如使用Start command of Clusters REST API。这可以用下面这样的方法来完成:

代码语言:javascript
运行
AI代码解释
复制
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状态:

代码语言:javascript
运行
AI代码解释
复制
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']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69013137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档