如何在现有bash脚本中调用Databricks API配置初始化脚本
在Bash脚本中接入Databricks初始化脚本API操作步骤
前置准备
- 提前获取Databricks工作区访问权限,生成个人访问Token
- 确认目标集群ID、初始化脚本在DBFS中的存放路径、集群节点配置等参数
操作方法
你可以选择两种认证方式嵌入脚本:
- 使用.netrc认证(对应官方示例的
-n参数)
提前在执行脚本的用户家目录下创建.netrc文件,写入以下内容:
machine <databricks-instance> login token password <你的Databricks个人访问Token>
修改文件权限为600:chmod 600 ~/.netrc
2. 直接在请求头中传入Token(更适合脚本内配置,无需依赖本地文件)
嵌入脚本的示例代码
以下是可直接在Bash脚本中使用的API调用示例,变量可根据实际情况替换:
# 先定义变量,方便统一修改 DATABRICKS_INSTANCE="你的工作区域名,如abc.cloud.databricks.com" CLUSTER_ID="目标集群ID" NODE_TYPE="你用的节点规格,如m5.xlarge" SPARK_VERSION="8.4.x-scala2.12" INIT_SCRIPT_PATH="dbfs:/FileStore/你的初始化脚本路径.sh" DB_TOKEN="你的Databricks个人访问Token" curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${DB_TOKEN}" -d '{ "cluster_id": "'"${CLUSTER_ID}"'", "num_workers": 1, "spark_version": "'"${SPARK_VERSION}"'", "node_type_id": "'"${NODE_TYPE}"'", "cluster_log_conf": { "dbfs" : { "destination": "dbfs:/cluster-logs" } }, "init_scripts": [ { "dbfs": { "destination": "'"${INIT_SCRIPT_PATH}"'" } } ] }' https://${DATABRICKS_INSTANCE}/api/2.0/clusters/edit
注意事项
- 上述示例中使用了Bash变量拼接JSON的写法,避免单引号包裹导致变量无法解析的问题
- 调用接口前确认目标集群处于停止状态,部分集群配置修改需要重启集群才能生效
- 你可以根据需求调整
init_scripts数组,添加多个初始化脚本 - 若你需要创建新集群而非修改现有集群,将接口地址后缀改为
api/2.0/clusters/create即可
内容的提问来源于stack exchange,提问作者rockrem
相关产品推荐
相关产品推荐

