Как я могу использовать относительные пути из R Notebook в Databricks? - PullRequest
3 голосов
/ 04 июля 2019

При работе в R я обычно храню свои функции в папке ./R/

. Чтобы перенести эти функции в рабочее пространство, я прибегаю к функции here::here().Для небольшого сценария мой код будет выглядеть так:

library(here)
source(here::here("R", "custom_function1.R"))
source(here::here("R", "custom_function2.R"))

Таким образом, совместное использование проектов среди коллег довольно просто.

Я использую Azure-Databricks Notebooks для проекта.При использовании here::here() функция указывает на сервер.

Есть ли способ определить относительные пути в Azure-Databricks Notebooks, чтобы отделить функции от самого ноутбука?

1 Ответ

2 голосов
/ 09 июля 2019

Если я правильно читаю вашу проблему, вы можете использовать относительные пути.

Предостережение: Я не уверен, однако, если вы ищете эквивалент here библиотеки.Я не видел эквивалента этому, но относительные пути работают.

См .:

https://docs.azuredatabricks.net/user-guide/notebooks/notebook-use.html#link-to-other-notebooks

Запустите записную книжку из другой записной книжки

Выможно запустить записную книжку из другой записной книжки с помощью магической команды %run <notebook>.Это примерно эквивалентно команде: load в Scala REPL на вашем локальном компьютере или оператору импорта в Python.Все переменные, определенные в, становятся доступными в вашей текущей записной книжке.

% run должен находиться в отдельной ячейке, потому что он запускает всю записную книжку встроенным.

Примечание Вы не можете использовать% runзапустить файл Python и импортировать объекты, определенные в этом файле, в записную книжку.Чтобы импортировать из файла Python, вы должны упаковать файл в библиотеку Python, создать библиотеку Azure Databricks из этой библиотеки Python и установить библиотеку в кластер , который вы используете для запуска вашей библиотеки.notebook.

Пример

Предположим, у вас есть notebookA и notebookB.notebookA содержит ячейку со следующим кодом Python:

x = 5

Даже если вы не определили x в notebookB, вы можете получить доступ к x в notebookB после запуска% run notebookA.

%run /Users/path/to/notebookA
print(x) # => 5

Относительные пути

Чтобы указать относительный путь, поставьте перед ним ./ или ../.Например, если notebookA и notebookB находятся в одном каталоге, вы можете запустить их по относительному пути.

%run ./notebookA
print(x) # => 5

, таким образом

%run ../someDirectory/notebookA # up a directory and into another    
print(x) # => 5

Более сложные взаимодействия между ноутбуками см. В разделе Рабочие процессы ноутбука .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...