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


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

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

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

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

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

Внимание

Записная книжка должна быть присоединена к активному сеансу вычислений для функций помощи в коде, включая автозавершение, форматирование кода 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 использует настраиваемый модуль форматирования SQL для форматирования 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".

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

Записные книжки 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 сбрасывается после установки.