我有一个docker文件,我想在其中
- 下载Databricks CLI
- 通过添加主机和令牌来配置CLI
- 然后运行一个命中Databricks令牌的python文件
我可以在docker映像中安装CLI,并且我有一个工作的python文件,可以将作业提交给Databricks API,但我不确定如何在docker中配置我的CLI。
这是我的
FROM python
MAINTAINER nope
# Creating Application Source Code Directory
RUN mkdir -p /src
# Setting Home Directory for containers
WORKDIR /src
# Installing python dependencies
RUN pip install databricks_cli
# Not sure how to do this part???
# databricks token kicks off the config via CLI
RUN databricks configure --token
# Copying src code to Container
COPY . /src
# Start Container
CMD echo $(databricks --version)
#Kicks off Pythern Job
CMD ["python", "get_run.py"]
如果我在CLI中执行databricks configure --token
,它会提示如下配置:
databricks configure --token
Databricks Host (should begin with https://):
最好不要这样做,原因有很多:
- 这是不安全的-如果以这种方式配置Databricks CLI,它将在容器内生成一个文件,任何有权访问该文件的人都可以读取该文件
- 代币有生存时间(默认为90天(-这意味着你需要定期重建你的容器
相反,最好将两个环境变量传递给容器,它们将由databricks
命令拾取。如文档中所述,这些是DATABRICKS_HOST
和DATABRICKS_TOKEN
。
当databricks configure
成功运行时,它会将信息写入文件~/.databrickscfg
:
[DEFAULT]
host = https://your-databricks-host-url
token = your-api-token
可以在容器中设置的一种方法是使用启动命令(此处为docker-compose.yml
的语法(:
/bin/bash -ic "echo '[DEFAULT]nhost = ${HOST_URL}ntoken = ${TOKEN}' > ~/.databrickscfg"
将您的令牌放在DockerFile中不是很安全。但是,如果你想采用这种方法,你可以使用下面的代码。
RUN export DATABRICKS_HOST=XXXXX &&
export DATABRICKS_API_TOKEN=XXXXX &&
export DATABRICKS_ORG_ID=XXXXX &&
export DATABRICKS_PORT=XXXXX &&
export DATABRICKS_CLUSTER_ID=XXXXX &&
echo "{"host": "${DATABRICKS_HOST}","token": "${DATABRICKS_API_TOKEN}","cluster_id":"${DATABRICKS_CLUSTER_ID}","org_id": "${DATABRICKS_ORG_ID}", "port": "${DATABRICKS_PORT}" }" >> /root/.databricks-connect
请确保使用一个RUN
命令运行行中的所有命令否则,DATABRICKS_HOST
或DATABRICKS_API_TOKEN
等变量可能无法正确传播。
如果您想连接到docker容器中的Databricks集群,您需要更多的配置。您可以在本文中找到所需的详细信息:如何将本地或远程机器连接到Databricks集群
每个用户的个人访问令牌数量限制为600但是通过bash很容易回声;y$(工作区-地区-URL($(CSE-developm-PAT($(现有-CLUSTER-ID($(工作空间或ID(15001〃|数据块连接配置
如果您想使用主机名和访问令牌访问databricks models/download_artifacts,就像在databrickscli 上一样
databricks configure --token --profile profile_name
Databricks主机(应以https://开头(:your_hostname
Token : token
如果您已经创建了配置文件名称并推送了模型,并且只想使用此配置文件访问docker中的模型/工件
在docker文件中添加以下代码
RUN pip install databricks_cli
ARG HOST_URL
ARG TOKEN
RUN echo "[<profile name>]nhost = ${HOST_URL}ntoken = ${TOKEN}" >> ~/.databrickscfg
#这将在构建后创建带有主机和令牌的.databricksfg文件,方法与使用databricksconfigure命令相同
在docker构建中添加参数HOST_URL和TOKEN
例如
您的主机名=https://adb-5443106279769864.19.azuredatabricks.net/
您的访问令牌=dapi********************53b1-2
sudo docker build -t test_tag --build-arg HOST_URL=<your host name> --build-arg TOKEN=<your access token> .
现在,您可以使用代码中的这个profilenameDatabricks:profile_name
访问您的实验。