Разработка кода в записных книжках Databricks

На этой странице описывается разработка кода в записных книжках Databricks, включая автозавершение, автоматическое форматирование для Python и SQL, объединение Python и SQL в записную книжку и отслеживание журнала версий записной книжки.

Дополнительные сведения о расширенных функциональных возможностях, доступных в редакторе, таких как автозавершение, выбор переменных, поддержка нескольких курсоров и параллельные диффы, см. в разделе "Использование записной книжки Databricks и редактора файлов".

При использовании записной книжки или редактора файлов помощник Databricks доступен для создания, объяснения и отладки кода. Дополнительные сведения см. в разделе "Использование Помощника по Databricks".

Записные книжки Databricks также включают встроенный интерактивный отладчик для записных книжек Python. Ознакомьтесь с интерактивным отладчиком Databricks.

Получение справки по написанию кода от помощника по Databricks

Помощник Databricks — это контекстно-пользовательский помощник, с которым вы можете взаимодействовать с помощью беседного интерфейса, что делает вас более продуктивным внутри Databricks. Вы можете описать задачу на английском языке и позволить помощник создавать код Python или SQL-запросы, объяснять сложный код и автоматически устранять ошибки. В помощник используются метаданные каталога Unity для понимания таблиц, столбцов, описаний и популярных ресурсов данных в вашей компании для предоставления персонализированных ответов.

Помощник по Databricks поможет вам выполнить следующие задачи:

  • Создайте код.
  • Отладочный код, включая определение и предложение исправлений для ошибок.
  • Преобразование и оптимизация кода.
  • Объясните код.
  • Дополнительные сведения см. в документации по Azure Databricks.

Сведения об использовании Помощника по Databricks для более эффективного использования кода см. в разделе "Использование Помощника по Databricks". Общие сведения о функциях Databricks Assistant см. в разделе "Функции DatabricksIQ".

Доступ к записной книжке для редактирования

Чтобы открыть записную книжку, используйте функцию поиска рабочей области или используйте браузер рабочей области для перехода к записной книжке и щелкните имя или значок записной книжки.

Обзор данных

Используйте браузер схемы для изучения таблиц и томов, доступных для записной книжки. Щелкните Значок данных записной книжки в левой части записной книжки, чтобы открыть браузер схемы.

Кнопка "Для вас " отображает только те таблицы, которые вы использовали в текущем сеансе или ранее помеченные как избранное.

При вводе текста в поле фильтра отображается только те элементы, которые содержат введенный текст. Отображаются только открытые или открытые в текущем сеансе элементы. Поле фильтра не выполняет полный поиск каталогов, схем и таблиц, доступных для записной книжки.

Чтобы открыть Меню Кебаб меню kebab, наведите курсор на имя элемента, как показано ниже.

меню kebab в браузере схемы

Если элемент является таблицей, можно выполнить следующее:

  • Автоматически создайте и запустите ячейку для отображения предварительного просмотра данных в таблице. Выберите "Предварительный просмотр" в новой ячейке в меню кебаб для таблицы.
  • Просмотр каталога, схемы или таблицы в Обозреватель каталога. Выберите "Открыть в каталоге" Обозреватель в меню кебаб. Откроется новая вкладка с выбранным элементом.
  • Путь к каталогу, схеме или таблице. Нажмите кнопку " Копировать" ... путь из меню кебаб для элемента.
  • Добавьте таблицу в избранное. Выберите " Добавить таблицу в избранное " в меню кебаб для таблицы.

Если элемент является каталогом, схемой или томом, можно скопировать путь элемента или открыть его в Обозреватель каталога.

Чтобы вставить имя таблицы или столбца непосредственно в ячейку, выполните следующее:

  1. Щелкните курсор в ячейке в расположении, в которое нужно ввести имя.
  2. Переместите курсор на имя таблицы или имя столбца в браузере схемы.
  3. Щелкните двойную стрелку двойная стрелка, которая отображается справа от имени элемента.

Сочетания клавиш

Чтобы отобразить сочетания клавиш, выберите сочетания клавиш справки>. Доступные сочетания клавиш зависят от того, находится ли курсор в ячейке кода (режим редактирования) или нет (режим команды).

Поиск и замена текста

Чтобы найти и заменить текст в записной книжке, выберите Edit (Правка) > Find and Replace (Поиск и замена). Текущее совпадение выделяется оранжевым цветом, а все остальные — желтым цветом.

Совпадающий текст

Чтобы заменить текущее совпадение, нажмите кнопку Replace (Заменить). Чтобы заменить все совпадения в записной книжке, нажмите Replace All (Заменить все).

Для перехода между совпадениями нажмите кнопки Prev (Предыдущее) и Next (Следующее). Переходить к предыдущему и следующему совпадению можно также с помощью клавиш SHIFT+ВВОД и ВВОД соответственно.

Чтобы закрыть средство поиска и замены, щелкните или нажмите Значок удаленияклавишу ESC.

Обозреватель переменных

В пользовательском интерфейсе записной книжки можно напрямую наблюдать переменные Python, Scala и R. Для Python в Databricks Runtime 12.2 LTS и более поздних версиях переменные обновляются в виде ячейки. Для Scala, R и Python в Databricks Runtime 11.3 LTS и ниже переменные обновляются после завершения работы ячейки.

Чтобы открыть обозреватель переменных, щелкните Значок обозревателя переменных в правой боковой панели. Откроется обозреватель переменных, показывающий значение и тип данных, включая фигуру, для каждой переменной, которая в настоящее время определена в записной книжке. (Фигура кадра данных PySpark имеет значение "?", так как вычисление фигуры может быть дорогостоящим.)

Чтобы отфильтровать отображение, введите текст в поле поиска. Список автоматически фильтруется по мере ввода.

Значения переменных автоматически обновляются при запуске ячеек записной книжки.

пример панели обозревателя переменных

Запуск выбранных ячеек

Можно запустить одну ячейку или коллекцию ячеек. Чтобы выбрать одну ячейку, щелкните в любом месте ячейки. Чтобы выбрать несколько ячеек, удерживайте Command клавишу на MacOS или Ctrl ключ в Windows и щелкните ячейку за пределами текстовой области, как показано на снимке экрана.

Выбор нескольких ячеек

Чтобы запустить выбранные ячейки, выберите "Выполнить > выбранную ячейку".

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

  • В кластере под управлением Databricks Runtime 13.3 LTS или ниже выбранные ячейки выполняются по отдельности. Если ошибка возникает в ячейке, выполнение продолжается с последующими ячейками.
  • В кластере под управлением Databricks Runtime 14.0 или более поздней версии или в хранилище SQL выбранные ячейки выполняются как пакет. Любая ошибка останавливает выполнение, и вы не можете отменить выполнение отдельных ячеек. С помощью кнопки "Прерывание" можно остановить выполнение всех ячеек.

Модульная настройка кода

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

С помощью Databricks Runtime 11.3 LTS и более поздних версий вы можете создавать и управлять файлами исходного кода в рабочей области Azure Databricks, а затем импортировать эти файлы в записные книжки по мере необходимости.

Дополнительные сведения о работе с файлами исходного кода см. в статье "Общий доступ к коду между записными книжками Databricks" и "Работа с модулями Python и R".

Запуск выбранного текста

Вы можете выделить код или инструкции SQL в ячейке записной книжки и запустить только этот выбор. Это полезно, если вы хотите быстро итерировать код и запросы.

  1. Выделите строки, которые требуется запустить.

  2. Выберите "Запустить выделенный > текст" или используйте сочетание клавишEnterCtrlShift++. Если текст не выделен, запуск выделенного текста выполняет текущую строку.

    Выполнение выбранных строк

Если вы используете смешанные языки в ячейке, необходимо включить %<language> строку в выборку.

Запуск выделенного текста также выполняет свернутый код, если в выделенном выделении есть какой-либо код.

Специальные команды ячеек, такие как %run, %pipи %sh поддерживаются.

Вы не можете использовать выделенный текст на ячейках с несколькими вкладками вывода (т. е. ячейками, в которых определен профиль данных или визуализация).

Форматирование ячеек кода

Azure Databricks предоставляет средства, позволяющие быстро и легко форматировать код Python и SQL в ячейках записной книжки. Эти средства упрощают форматирование кода и применение единых стандартов кодирования в записных книжках.

Форматирование ячеек Python

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Azure Databricks поддерживает форматирование кода Python с помощью Black в записной книжке. Записная книжка должна быть подключена к кластеру с blacktokenize-rt установленными пакетами Python, а модуль форматирования Black выполняется в кластере, к которому подключена записная книжка.

В 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 в записной книжке.

Форматировщик можно активировать следующими способами:

  • Форматирование одной ячейки

    • Сочетание клавиш: CMD + SHIFT + F.
    • Контекстное меню команд:
      • Форматирование ячейки SQL: выберите формат SQL в раскрывающемся меню контекста команды ячейки SQL. Этот пункт меню отображается только в ячейках записной книжки SQL или с %sqlмагией языка.
      • Форматирование ячейки Python: выберите формат Python в раскрывающемся меню контекста команды ячейки Python. Этот пункт меню отображается только в ячейках записной книжки Python или с магией %pythonязыка.
    • Меню "Изменить записную книжку": выберите ячейку Python или SQL, а затем выберите "Изменить > ячейки форматирования".
  • Форматирование нескольких ячеек

    Выберите несколько ячеек и нажмите кнопку "Изменить > ячейки формата". Если выбрать ячейки нескольких языков, отформатируются только ячейки SQL и Python. Это включает те, которые используют %sql и %python.

  • Форматирование всех ячеек Python и SQL в записной книжке

    Выберите "Изменить > формат записной книжки". Если записная книжка содержит несколько языков, отформатируются только ячейки SQL и Python. Это включает те, которые используют %sql и %python.

Ограничения форматирования кода

  • Черный применяет стандарты PEP 8 для отступа 4 пробела. Отступ не настраивается.
  • Форматирование внедренных строк Python в UDF SQL не поддерживается. Аналогичным образом форматирование строк SQL в UDF Python не поддерживается.

Журнал версий

Записные книжки Azure Databricks поддерживают журнал версий записных книжек, позволяя просматривать и восстанавливать предыдущие моментальные снимки записной книжки. Вы можете выполнить следующие действия по версиям: добавлять примечания, восстанавливать и удалять версии, а также очищать журнал версий.

Вы также можете синхронизировать работу в Databricks с удаленным репозиторием Git.

Чтобы получить доступ к версиям записной книжки, щелкните Значок журнала версий в правой боковой панели. Появится журнал версий записной книжки. Вы также можете выбрать журнал версий файлов>.

Добавление примечания

Чтобы добавить комментарий к последней версии, выполните следующие действия.

  1. Щелкните версию.

  2. Нажмите кнопку " Сохранить сейчас".

    Сохранение комментария

  3. В диалоговом окне "Сохранить версию записной книжки" введите комментарий.

  4. Нажмите кнопку Сохранить. Версия записной книжки сохраняется с введенным комментарием.

Восстановление версии

Чтобы восстановить версию, выполните приведенные действия.

  1. Щелкните версию.

  2. Нажмите Восстановить эту версию.

    Восстановление версии

  3. Нажмите кнопку Подтвердить. Выбранная версия становится последней версией записной книжки.

Удаление версии

Чтобы удалить запись версии, выполните приведенные действия.

  1. Щелкните версию.

  2. Щелкните значок Корзинакорзины.

    Удаление версии

  3. Выберите Yes, erase (Да, удалить). Выбранная версия удаляется из журнала.

Очистка журнала версий

Журнал версий не может быть восстановлен после его очистки.

Чтобы очистить журнал версий записной книжки, выполните следующие действия.

  1. Выберите журнал версий очистки файла>.
  2. Выберите Yes, clear (Да, очистить). Журнал версий записной книжки очищается.

Языки кода в записных книжках

Настройка языка по умолчанию

Язык по умолчанию для записной книжки отображается рядом с именем записной книжки.

Язык записной книжки по умолчанию

Чтобы изменить язык по умолчанию, нажмите кнопку языка и выберите новый язык в раскрывающемся меню. Чтобы обеспечить продолжение работы существующих команд, к командам предыдущего языка по умолчанию автоматически добавляется префикс магической команды языка.

Использование нескольких языков

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

Раскрывающийся список языков ячейки

Вы также можете использовать магическую команду языка %<language> в начале ячейки. Поддерживаемые магические команды: %python, %r, %scala и %sql.

Примечание.

При вызове магической команды языка команда отправляется в REPL в контексте выполнения записной книжки. Переменные, определенные на одном языке (и, следовательно, в REPL для этого языка), недоступны в REPL на другом языке. REPL могут предоставлять общий доступ к состоянию только через внешние ресурсы, такие как файлы в DBFS или объекты в хранилище объектов.

Ноутбуки также поддерживают несколько вспомогательных магических команд:

  • %sh позволяет запускать код оболочки в записной книжке. Для сбоя ячейки, если команда оболочки имеет состояние выхода, отличное от нуля, добавьте параметр -e. Эта команда выполняется только для драйвера Apache Spark, а не для рабочих ролей. Чтобы выполнить команду оболочки на всех узлах, используйте скрипт init.
  • %fs позволяет использовать команды файловой системы dbutils. Например, чтобы выполнить команду dbutils.fs.ls для вывода списка файлов, можно указать %fs ls. Дополнительные сведения см. в статье "Работа с файлами в Azure Databricks".
  • %md: Позволяет включать различные типы документации, включая текст, изображения, математические формулы и уравнения. См. следующий раздел.

Выделение синтаксиса SQL и автозавершение в командах Python

Функции выделения синтаксиса и автозаполнения SQL доступны при использовании SQL внутри команды Python, например в команде spark.sql.

Изучение результатов ячейки SQL в записных книжках Python с помощью Python

Возможно, вам потребуется загрузить данные с помощью SQL, а затем изучить их с помощью Python. В записной книжке Databricks Python результаты таблицы из ячейки языка SQL автоматически становятся доступными в качестве кадра данных Python, назначенного переменной _sqldf.

В Databricks Runtime 13.3 LTS и более поздних версиях можно также получить доступ к результату DataFrame с помощью системы кэширования выходных данных IPython. Счетчик запроса отображается в выходном сообщении, отображаемом в нижней части результатов ячейки. В примере показана ссылка на результат.Out[2]

Примечание.

  • Переменная _sqldf может быть переназначна при каждом %sql запуске ячейки. Чтобы избежать потери ссылки на результат DataFrame, назначьте его новому имени переменной перед запуском следующей %sql ячейки:

    new_dataframe_name = _sqldf
    
  • Если запрос использует мини-приложение для параметризации, результаты будут недоступны в виде кадра данных Python.

  • Если запрос использует ключевые слова CACHE TABLE или UNCACHE TABLE, результаты будут недоступны в виде кадра данных Python.

На снимке экрана ниже приведен пример:

Кадр данных результатов SQL

Параллельное выполнение ячеек SQL

Хотя команда выполняется и записная книжка подключена к интерактивному кластеру, вы можете одновременно запустить ячейку SQL с текущей командой. Ячейка SQL выполняется в новом параллельном сеансе.

Для параллельного выполнения ячейки:

  1. Запустите ячейку.

  2. Нажмите кнопку Выполнить. Ячейка немедленно выполняется.

    Параллельное выполнение ячейки SQL с текущей запущенной ячейкой

Так как ячейка выполняется в новом сеансе, временные представления, определяемые пользователем объекты и неявные кадры данных Python (_sqldf) не поддерживаются для ячеек, выполняемых параллельно. Кроме того, во время параллельного выполнения используются каталог и имена баз данных по умолчанию. Если код ссылается на таблицу в другом каталоге или базе данных, необходимо указать имя таблицы с помощью трехуровневого пространства имен (catalog.schema).table

Выполнение ячеек SQL в хранилище SQL

Команды SQL можно запускать в записной книжке Databricks в хранилище SQL, тип вычислений, оптимизированных для аналитики SQL. См . статью "Использование записной книжки с хранилищем SQL".

Отображение изображений

Чтобы отобразить изображения, хранящиеся в FileStore, используйте следующий синтаксис:

%md
![test](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}\\]

отрисовывается следующим образом:

Отрендеренное уравнение 1

и

%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})\\)

отрисовывается следующим образом:

Отрендеренное уравнение 2

Добавление HTML

Вы можете добавить HTML в записную книжку с помощью функции displayHTML. Пример того, как это сделать, см. в статье HTML, D3 и SVG в записных книжках.

Примечание.

Контейнер iFrame displayHTML обслуживается из домена databricksusercontent.com, а песочница iFrame включает атрибут allow-same-origin. Адрес databricksusercontent.com должен быть доступным из браузера. Если он заблокирован в вашей корпоративной сети, его нужно внести его в список разрешений.

Вы можете добавить ссылки на другие записные книжки или папки в ячейках 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>