Azure Скрипт инициализации кластера базы данных - установить колесо python - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть сценарий python, который монтирует учетную запись хранения в блоках данных, а затем устанавливает колесо из учетной записи хранения. Я пытаюсь запустить его как сценарий инициализации кластера, но он продолжает сбой. Мой сценарий имеет вид:

#/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 и использую его как сценарий инициализации кластера, кластеру не удается start и в сообщении об ошибке говорится, что сценарий инициализации имеет ненулевой статус выхода. Я проверил журналы, и кажется, что он работает как bash вместо python:

bash: line 1: mount_point: command not found

Я попытался запустить сценарий python из сценария bash, который называется init. bash, содержащий одну строку:

/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 - Установить колесо из подключенного хранилища

1 Ответ

0 голосов
/ 07 апреля 2020

Я решил использовать ноутбук, который монтирует хранилище и создает сценарий инициализации 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)"
...