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


Разработка кода в записных книжках 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 и более поздних версиях Azure Databricks предварительно устанавливает black и 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 или SQL, а затем выберите >.
  • Форматирование нескольких ячеек

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

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

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

Чтобы настроить форматирование запросов SQL, см. инструкции пользовательского формата SQL.

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

  • %sh позволяет запускать код оболочки в ноутбуке. Для сбоя ячейки, если команда оболочки имеет состояние выхода, отличное от нуля, добавьте параметр -e. Эта команда выполняется только на драйвере программы Apache Spark, а не на рабочих узлах. Чтобы выполнить команду оболочки на всех узлах, используйте скрипт инициализации.
  • %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:

Питон

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".

Запускайте код в среде Assistant на бессерверной вычислительной платформе

Вы можете запустить код в Ассистенте на Databricks на бессерверных вычислениях, что является вычислительной платформой по умолчанию в Databricks. Для страниц, где уже выбрано вычисление (например, записные книжки или редактор SQL), Databricks по умолчанию использует его. Сведения о типах вычислений см. в разделе "Вычисления".

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

Использование магических команд

Записные книжки Databricks поддерживают различные магические команды, расширяющие функциональные возможности, выходящие за рамки стандартного синтаксиса, чтобы упростить распространенные задачи. Команды магии предваряются %, чтобы использовать магию строк и ячеек.

Волшебная команда Пример Описание
%python %python
print("Hello")
Переключить язык ячейки на Python. Выполняет код Python в ячейке.
%r %r
print("Hello")
Переключите язык ячеек на R. Выполняет код R в ячейке.
%scala %scala
println("Hello")
Переключите язык ячеек на Scala. Выполняет код Scala в ячейке.
%sql %sql
SELECT * FROM table
Переключите язык ячейки на SQL. Результаты доступны как _sqldf в ячейках Python или SQL.
%md %md
# Title
Content here
Переключите язык ячеек на Markdown. Отображает содержимое Markdown в ячейке. Поддерживает текст, изображения, формулы и LaTeX.
%pip %pip install pandas Установите пакеты Python для определенной записной книжки. См. статью Библиотеки Python, привязанные к блокноту.
%run %run /path/to/notebook Выполните другую записную книжку, импортируя ее функции и переменные. См. рабочие процессы Notebook.
%fs %fs ls /path Выполните команды файловой системы dbutils. Короткое слово для dbutils.fs команд. См. статью "Работа с файлами".
%sh %sh ls -la Выполните команды оболочки. Выполняется только на узле драйвера. Используется -e для сбоя при ошибке.
%tensorboard %tensorboard --logdir /logs Отображение встроенного пользовательского интерфейса TensorBoard. Доступно только в Databricks Runtime ML. См. TensorBoard.
%set_cell_max_output_size_in_mb %set_cell_max_output_size_in_mb 10 Задайте максимальный размер выходных данных ячейки. Диапазон: 1–20 МБ. Применяется ко всем последующим ячейкам записной книжки.
%skip %skip
print("This won't run")
Пропустить выполнение ячейки. Предотвращает выполнение ячейки при запуске записной книжки.

Примечание.

IPython Automagic: ноутбуки Databricks имеют включенную по умолчанию автоматическую функцию IPython, которая позволяет некоторым командам pip работать без использования префикса %. Например, pip install pandas работает так же, как %pip install pandas.

Внимание

  • Переменные и состояние изолированы между разными языковыми окружениями REPL. Например, переменные Python недоступны в ячейках Scala.
  • Ячейка записной книжки может иметь только одну магическую команду ячейки, и она должна быть первой строкой ячейки.
  • %run должен находиться в отдельной ячейке, потому что он запускает всю записную книжку напрямую.
  • При использовании %pip в Databricks Runtime 12.2 LTS и ниже, поместите все команды установки пакетов на начало записной книжки, так как состояние Python сбрасывается после установки.