繁体   English   中英

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

[英]Azure Databricks cluster init script - install python wheel

我有一个 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的文件并将其用作集群初始化脚本,则集群无法启动并且错误消息说init 脚本具有非零退出状态。 我检查了日志,它似乎以 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 集群初始化脚本 - 从已安装的存储中安装轮子

我采用的解决方案是运行一个笔记本来安装存储并创建一个 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)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM