Разработка кода в записных книжках Databricks
На этой странице описывается разработка кода в записных книжках Databricks, включая автозавершение, автоматическое форматирование для Python и SQL, объединение Python и SQL в записную книжку и отслеживание журнала версий записной книжки.
Дополнительные сведения о расширенных функциональных возможностях, доступных в редакторе, таких как автозаполнение, выбор переменных, поддержка нескольких курсоров и параллельные диффы, см. в разделе Навигация по записной книжке Databricks и редактору файлов.
При использовании записной книжки или редактора файлов помощник Databricks доступен, чтобы помочь вам с generate, explainи отладкой кода. Дополнительные сведения см. в разделе "Использование Помощника по Databricks".
Записные книжки Databricks также включают встроенный интерактивный отладчик для записных книжек Python. См . статью "Отладка записных книжек".
Модульная настройка кода
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
С помощью Databricks Runtime 11.3 LTS и более поздних версий вы можете создавать и управлять файлами исходного кода в рабочей области Azure Databricks, а затем импортировать эти файлы в записные книжки по мере необходимости.
Дополнительные сведения о работе с файлами исходного кода см. в статье "Общий доступ к коду между записными книжками Databricks" и "Работа с модулями Python и R".
Форматирование ячеек кода
Azure Databricks предоставляет средства, позволяющие быстро и легко форматировать код Python и SQL в ячейках записной книжки. Эти средства упрощают форматирование кода и применение единых стандартов кодирования в записных книжках.
Библиотека черного форматирования Python
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Azure Databricks поддерживает форматирование кода Python с помощью черного цвета в записной книжке. Записная книжка должна быть подключена к кластеру с установленными пакетами black
tokenize-rt
Python.
В Databricks Runtime 11.3 LTS и более поздних версиях предустановки black
Azure Databricks и tokenize-rt
. Вы можете использовать средство форматирования напрямую без необходимости устанавливать эти библиотеки.
В Databricks Runtime 10.4 LTS и ниже необходимо установить black==22.3.0
и tokenize-rt==4.2.1
из PyPI в записной книжке или кластере, чтобы использовать средство форматирования Python. В записной книжке можно выполнить следующую команду:
%pip install black==22.3.0 tokenize-rt==4.2.1
или установите библиотеку в кластере.
Дополнительные сведения об установке библиотек см. в разделе "Управление средой Python".
Для файлов и записных книжек в папках Databricks Git можно настроить средство форматирования Python на pyproject.toml
основе файла. Чтобы использовать эту функцию, создайте pyproject.toml
файл в корневом каталоге папки Git и настройте его в соответствии с форматом конфигурации Black. Измените раздел [tool.black] в файле. Конфигурация применяется при форматировании любого файла и записной книжки в этой папке Git.
Форматирование ячеек Python и SQL
Для форматирования кода необходимо иметь разрешение CAN EDIT в записной книжке.
Azure Databricks использует библиотеку gethue/sql-formatter для форматирования SQL и черного формата кода для Python.
Форматировщик можно активировать следующими способами:
Форматирование одной ячейки
- Сочетание клавиш: CMD + SHIFT + F.
- Контекстное меню команд:
- Форматирование ячейки SQL: SelectФормат SQL в раскрывающемся меню контекста команды ячейки SQL. Этот пункт меню отображается только в ячейках записной книжки SQL или с
%sql
магией языка. - Форматирование ячейки Python: Selectв раскрывающемся меню контекста команды ячейки Python выберите "Форматирование Python". Этот пункт меню отображается только в ячейках записной книжки Python или с магией
%python
языка.
- Форматирование ячейки SQL: SelectФормат SQL в раскрывающемся меню контекста команды ячейки SQL. Этот пункт меню отображается только в ячейках записной книжки SQL или с
- Меню "Изменить записной книжки"
: ячейку Python или SQL, а затем "Изменить ячейки форматирования".
Форматирование нескольких ячеек
Select несколько ячеек, а затем selectоткройте > Формат ячеек. Если select ячейки нескольких языков, отформатируются только ячейки SQL и Python. Это включает те, которые используют
%sql
и%python
.Форматирование всех ячеек Python и SQL в записной книжке
Select Редактировать > Формат записной книжки. Если записная книжка содержит несколько языков, отформатируются только ячейки SQL и Python. Это включает те, которые используют
%sql
и%python
.
Ограничения форматирования кода
- Черный применяет стандарты PEP 8 для отступа 4 пробела. Отступ не настраивается.
- Форматирование внедренных строк Python в UDF SQL не поддерживается. Аналогичным образом форматирование строк SQL в UDF Python не поддерживается.
Языки кода в записных книжках
язык по умолчанию Set
Язык по умолчанию для записной книжки отображается рядом с именем записной книжки.
Чтобы изменить язык по умолчанию, нажмите кнопку языка и select новый язык в раскрывающемся меню. Чтобы обеспечить продолжение работы существующих команд, к командам предыдущего языка по умолчанию автоматически добавляется префикс магической команды языка.
Использование нескольких языков
По умолчанию в ячейках используется язык записной книжки по умолчанию. Вы можете переопределить язык по умолчанию в ячейке, нажав кнопку языка и выбрав язык в раскрывающемся меню.
Вы также можете использовать магическую команду языка %<language>
в начале ячейки. Поддерживаемые магические команды: %python
, %r
, %scala
и %sql
.
Примечание.
При вызове магической команды языка команда отправляется в REPL в контексте выполнения записной книжки. Переменные, определенные на одном языке (и, следовательно, в REPL для этого языка), недоступны в REPL на другом языке. REPL могут предоставлять общий доступ к состоянию только через внешние ресурсы, такие как файлы в DBFS или объекты в хранилище объектов.
Ноутбуки также поддерживают несколько вспомогательных магических команд:
-
%sh
позволяет запускать код оболочки в записной книжке. Для сбоя ячейки, если команда оболочки имеет состояние выхода, отличное от нуля, добавьте параметр-e
. Эта команда выполняется только для драйвера Apache Spark, а не для рабочих ролей. Чтобы выполнить команду оболочки на всех узлах, используйте скрипт init. -
%fs
позволяет использовать команды файловой системыdbutils
. Например, чтобы выполнить командуdbutils.fs.ls
для list файлов, можно указать%fs ls
вместо этого. Дополнительные сведения см. в статье "Работа с файлами в Azure Databricks". -
%md
: Позволяет включать различные типы документации, включая текст, изображения, математические формулы и уравнения. См. следующий раздел.
Выделение синтаксиса SQL и автозавершение в командах Python
Функции выделения синтаксиса и автозаполнения SQL доступны при использовании SQL внутри команды Python, например в команде spark.sql
.
Изучение результатов ячейки SQL
В записной книжке Databricks результаты из языковой ячейки SQL автоматически становятся доступными как неявный кадр данных, назначенный переменной _sqldf
. Затем эту переменную можно использовать в любых ячейках Python и SQL, которые вы запускаете после этого, независимо от их положения в записной книжке.
Примечание.
Сейчас эта функция имеет следующие ограничения:
- Переменная
_sqldf
недоступна в записных книжках, использующих хранилище SQL для вычислений. - Использование
_sqldf
в последующих ячейках Python поддерживается в Databricks Runtime 13.3 и выше. - Использование
_sqldf
в последующих ячейках SQL поддерживается только в Databricks Runtime 14.3 и выше. - Если в запросе используются ключевые слова
CACHE TABLE
илиUNCACHE TABLE
_sqldf
переменная недоступна.
На снимке экрана ниже показано, как _sqldf
можно использовать в последующих ячейках Python и SQL:
Внимание
Переменная _sqldf
переназначается при каждом запуске ячейки SQL. Чтобы избежать потери ссылки на определенный результат DataFrame, назначьте его новому имени переменной перед запуском следующей ячейки SQL:
Python
new_dataframe_name = _sqldf
SQL
ALTER VIEW _sqldf RENAME TO new_dataframe_name
Параллельное выполнение ячеек SQL
Хотя команда выполняется и записная книжка подключена к интерактивному кластеру, вы можете одновременно запустить ячейку SQL с текущей командой. Ячейка SQL выполняется в новом параллельном сеансе.
Для параллельного выполнения ячейки:
Щелкните Запустить сейчас. Ячейка немедленно выполняется.
Так как ячейка выполняется в новом сеансе, временные views, пользовательские функции и неявные кадры данных Python (_sqldf
) не поддерживаются для ячеек, выполняемых параллельно. Кроме того, во время параллельного выполнения используются имена catalog и баз данных по умолчанию. Если код ссылается на table в другой catalog или базе данных, необходимо указать имя table с помощью трехуровневого пространства имен (catalog
.schema
.table
).
Выполнение ячеек SQL в хранилище SQL
Команды SQL можно запускать в записной книжке Databricks в хранилище SQL, тип вычислений, оптимизированных для аналитики SQL. См . статью "Использование записной книжки с хранилищем SQL".
Отображение изображений
Azure Databricks поддерживает отображение изображений в ячейках Markdown. Вы можете отображать изображения, хранящиеся в рабочей области, Volumesили FileStore.
Отображение изображений, хранящихся в рабочей области
Для отображения изображений, хранящихся в рабочей области, можно использовать абсолютные пути или относительные пути. Чтобы отобразить изображение, хранящееся в рабочей области, используйте следующий синтаксис:
%md
![my_test_image](/Workspace/absolute/path/to/image.png)
![my_test_image](./relative/path/to/image.png)
Отображение изображений, хранящихся в Volumes
Абсолютные пути можно использовать для отображения изображений, хранящихся в Volumes. Чтобы отобразить изображение, хранящееся в Volumes, используйте следующий синтаксис:
%md
![my_test_image](/Volumes/absolute/path/to/image.png)
Отображение изображений, хранящихся в FileStore
Чтобы отобразить изображения, хранящиеся в FileStore, используйте следующий синтаксис:
%md
![my_test_image](files/image.png)
Например, у вас есть файл изображения логотипа Databricks в FileStore:
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
При включении следующего кода в ячейку Markdown:
изображение подготавливается к просмотру в ячейке:
Перетаскивание изображений
Вы можете перетаскивать изображения из локальной файловой системы в ячейки Markdown. Изображение передается в текущий каталог рабочей области и отображается в ячейке.
Отображение математических уравнений
Записные книжки поддерживают KaTeX для отображения математических формул и уравнений. Например,
%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)
\\(A{_i}{_j}=B{_i}{_j}\\)
$$c = \\pm\\sqrt{a^2 + b^2}$$
\\[A{_i}{_j}=B{_i}{_j}\\]
отрисовывается следующим образом:
и
%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)
where \\(\delta=(\beta - \mu_{t-1})\\)
отрисовывается следующим образом:
Добавление HTML
Вы можете добавить HTML в записную книжку с помощью функции displayHTML
. Пример того, как это сделать, см. в статье HTML, D3 и SVG в записных книжках.
Примечание.
Контейнер iFrame displayHTML
обслуживается из домена databricksusercontent.com
, а песочница iFrame включает атрибут allow-same-origin
. Адрес databricksusercontent.com
должен быть доступным из браузера. Если в данный момент оно заблокировано корпоративной сетью, оно должно быть добавлено в список разрешений list.
Ссылки на другие записные книжки
Вы можете добавить ссылки на другие записные книжки или папки в ячейках Markdown с помощью относительных путей. Укажите в качестве относительного пути атрибут тега привязки href
, начиная с $
, и следуйте тому же шаблону, что и в файловых системах UNIX:
%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>