Azure Databricks 群集初始化脚本 - 安装 python 轮

Posted

技术标签:

【中文标题】Azure Databricks 群集初始化脚本 - 安装 python 轮【英文标题】:Azure Databricks cluster init script - install python wheel 【发布时间】:2020-07-19 11:49:48 【问题描述】:

我有一个 python 脚本,它在 databricks 中安装一个存储帐户,然后从存储帐户安装一个***。我正在尝试将它作为集群初始化脚本运行,但它一直失败。我的脚本是这样的:

#/databricks/python/bin/python
mount_point = "/mnt/...."
configs = ....
source = "...."
if not any(mount.mountPoint == mount_point for mount in dbutils.fs.mounts()):
  dbutils.fs.mount(source = source, mount_point = mount_point, extra_configs = configs)
dbutils.library.install("dbfs:/mnt/.....")
dbutils.library.restartPython()

当我直接在笔记本中运行它时它可以工作,但是如果我保存到一个名为 dbfs:/databricks/init_scripts/datalakes/init.py 的文件并将其用作集群初始化脚本,集群无法启动并且错误消息说初始化脚本没有-零退出状态。我检查了日志,它似乎是以 bash 而不是 python 运行的:

bash: line 1: mount_point: command not found

我尝试从一个名为 init.bash 的 bash 脚本运行 python 脚本,其中包含这一行:

/databricks/python/bin/python "dbfs:/databricks/init_scripts/datalakes/init.py"

然后使用init.bash的集群启动失败,日志说找不到python文件:

/databricks/python/bin/python: can't open file 'dbfs:/databricks/init_scripts/datalakes/init.py': [Errno 2] No such file or directory

谁能告诉我如何让这个工作?

相关问题:Azure Databricks cluster init script - Install wheel from mounted storage

【问题讨论】:

脚本找不到文件的原因是因为您使用的是dbfs:/ 路径。将dbfs:/ 替换为/dbfs/,它应该可以工作(dbfs 安装在集群节点上的 /dbfs 上) 【参考方案1】:

我采用的解决方案是运行一个笔记本来安装存储并创建一个 bash 初始化脚本来安装***。像这样的:

mount_point = "/mnt/...."
configs = ....
source = "...."
if not any(mount.mountPoint == mount_point for mount in dbutils.fs.mounts()):
  dbutils.fs.mount(source = source, mount_point = mount_point, extra_configs = configs)

dbutils.fs.put("dbfs:/databricks/init_scripts/datalakes/init.bash",""" 
        /databricks/python/bin/pip install "../../../dbfs/mnt/package-source/parser-3.0-py3-none-any.whl"""", True)"

【讨论】:

以上是关于Azure Databricks 群集初始化脚本 - 安装 python 轮的主要内容,如果未能解决你的问题,请参考以下文章

Azure Databricks:如何在 Databricks 群集中添加 Spark 配置

Azure Databricks:此群集的运行时版本不支持

火花作业中的 Azure databricks 群集错误:ExecutorLostFailure

在 Azure Databricks Notebook 上检索群集不活动时间

当我们重新启动 Azure Databricks 群集时,内部会发生啥?

在 Azure 中检查 Databricks 运行时的版本