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


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

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

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

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

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

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

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

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

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

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

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

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

Обзор данных

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

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

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

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

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

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

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

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

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

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

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

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

Палитра команд

Вы можете быстро выполнять действия в записной книжке с помощью палитры команд. Чтобы открыть панель действий записной книжки, щелкните _ в правом нижнем углу рабочей области или используйте сочетание клавиш CMD + SHIFT+ P в MacOS или CTRL+SHIFT+P в Windows.

палитра команд

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

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

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

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

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

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

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

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

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

Отображение изображений, хранящихся в рабочей области

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

%md
![my_test_image](/Workspace/absolute/path/to/image.png)

![my_test_image](./relative/path/to/image.png)

Внедрение изображения в ячейку Markdown

Отображение изображений, хранящихся в томах

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

%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

изображение подготавливается к просмотру в ячейке:

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

Перетаскивание изображений

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