
[英]Databricks CLI Error databricks-connect' is not recognized
[英]Switch between workspaces with databricks-connect
是否可以使用 databricks-connect 切换工作区?
我目前正在尝试切换: spark.conf.set('spark.driver.host', cluster_config['host'])
但这会返回以下错误: AnalysisException: Cannot modify the value of a Spark config: spark.driver.host
如果您查看有关设置客户端的文档,您将看到配置 Databricks Connect 的三种方法:
databricks-connect configure
生成的配置文件 - 文件名始终为~/.databricks-connect
,DATABRICKS_ADDRESS
, DATABRICKS_API_TOKEN
,...spark.databricks.service.address
, spark.databricks.service.token
, ... 但是使用此方法时,Spark Session 可能已经初始化,因此您可能无法在不重新启动 Spark 的情况下即时切换。但是如果你使用不同的 DBR 版本,那么仅仅改变配置属性是不够的,你还需要切换包含相应版本的 Databricks Connect 分发的 Python 环境。
对于我自己的工作,我编写了以下 Zsh 脚本,该脚本允许在不同的设置(分片)之间轻松切换 - 虽然它允许一次只使用一个分片。 先决条件是:
<name>-shard
databricks-connect
安装到激活的 conda 环境中:pyenv activate field-eng-shard
pip install -U databricks-connect==<DBR-version>
~/.databricks-connect-<name>
文件中,该文件将符号链接到~/.databricks-connect
function use-shard() {
SHARD_NAME="$1"
if [ -z "$SHARD_NAME" ]; then
echo "Usage: use-shard shard-name"
return 1
fi
if [ ! -L ~/.databricks-connect ] && [ -f ~/.databricks-connect ]; then
echo "There is ~/.databricks-connect file - possibly you configured another shard"
elif [ -f ~/.databricks-connect-${SHARD_NAME} ]; then
rm -f ~/.databricks-connect
ln -s ~/.databricks-connect-${SHARD_NAME} ~/.databricks-connect
pyenv deactivate
pyenv activate ${SHARD_NAME}-shard
else
echo "There is no configuration file for shard: ~/.databricks-connect-${SHARD_NAME}"
fi
}
可能它不会直接回答您的问题,但也可以使用 Visual Studio Databricks 插件,该插件将使用 databricks 连接,并且从那里很容易切换到不同的环境。 https://marketplace.visualstudio.com/items?itemName=paiqo.databricks-vscode 。
"databricks.connectionManager": "VSCode Settings",
"databricks.connections": [
{
"apiRootUrl": "https://westeurope.azuredatabricks.net",
"displayName": "My DEV workspace",
"localSyncFolder": "c:\\Databricks\\dev",
"personalAccessToken": "dapi219e30212312311c6721a66ce879e"
},
{
"apiRootUrl": "https://westeurope.azuredatabricks.net",
"displayName": "My TEST workspace",
"localSyncFolder": "c:\\Databricks\\test",
"personalAccessToken": "dapi219e30212312311c672aaaaaaaaaa"
}
],
...
我创建了一个简单的 python 脚本来更改.databricks-connect
配置文件中的cluster_id
。
要执行,请确保您的虚拟环境已配置环境变量 DATABRICKS_CLUSTER。 获取集群 ID 显示在官方databricks-connect
文档中。
设置环境变量:
export DATABRICKS_CLUSTER=your-cluster-id
设置环境变量后,只要激活新的虚拟环境,只需使用以下 python 脚本即可切换集群。
import os
import json
#Get databricks cluster associated with current virtual env
DATABRICKS_CLUSTER = os.getenv('DATABRICKS_CLUSTER')
HOME = os.getenv('HOME')
#Open the databricks-connect config file
with open(f'{HOME}/.databricks-connect', 'r') as j:
config = json.loads(j.read())
#Update new cluster ID
config['cluster_id'] = DATABRICKS_CLUSTER
#Save the databricks connect config file
with open(f'{HOME}/.databricks-connect', 'w') as outfile:
json.dump(config, outfile, indent=4)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.