Поделиться через


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

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

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

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

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

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

Внимание

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

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

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

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

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

Библиотека черного форматирования Python

Внимание

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

Azure Databricks поддерживает форматирование кода Python с помощью черного цвета в записной книжке. Записная книжка должна быть подключена к кластеру с установленными пакетами blacktokenize-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: выберите Формат 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 не поддерживается.

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

Задать язык по умолчанию

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

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

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

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

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

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

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

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

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

Внимание

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

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

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

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

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

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

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

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

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

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

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