Удаленная среда разработки в Databricks

Это важно

Удаленная разработка находится в бета-версии.

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

Требования

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

  • Databricks CLI версии 0.269 или более поздней, установленной на вашем локальном компьютере, и аутентификация настроена. См. раздел "Установка".
  • Выделенный (один пользователь) кластер под управлением Databricks Runtime 17.0 или более поздней версии. См. обзор выделенных вычислительных ресурсов. Дополнительно:
    • Каталог Unity должен быть включен.
    • Если политика вычислений существует, она не должна запрещать выполнение заданий.

Настройка подключения SSH

Сначала настройте туннель SSH с помощью команды databricks ssh setup. Замените <connection-name> именем подключения, например my-connection.

databricks ssh setup --name <connection-name>

Интерфейс командной строки предложит выбрать кластер. Вы также можете указать один напрямую с помощью --cluster <cluster-id>:

databricks ssh setup --name <connection-name> --cluster <cluster-id>

Замечание

Для пользователей IntelliJ Databricks рекомендует добавлять --auto-start-cluster=false в команду установки и запускать кластер вручную перед подключением. Это связано с тем, что среды idEs JetBrains запускают все настроенные кластеры при запуске, что может привести к непредвиденным затратам на вычисления.

Подключение к Databricks

Затем подключитесь к Databricks с помощью интегрированной среды разработки или терминала.

Подключение с помощью Visual Studio Code или Курсора

  1. Для Visual Studio Code установите расширение Remote SSH. Курсор включает удаленное расширение SSH по умолчанию.

  2. В главном меню интегрированной среды разработки щелкните "View">Палитра команд. Выберите Remote-SSH: Параметры. Кроме того, выберите Параметры: Откройте параметры пользователя (JSON), чтобы изменить их напрямую.

  3. В разделе Remote.SSH: расширения по умолчанию (или remote.SSH.defaultExtensions в settings.json), добавьте ms-Python.Python и ms-toolsai.jupyter.

    При изменении settings.json:

    "remote.SSH.defaultExtensions": [
        "ms-Python.Python",
        "ms-toolsai.jupyter"
    ]
    

    Замечание

    При необходимости увеличьте значение Remote.SSH: время ожидания подключения (или remote.SSH.connectTimeout в settings.json), чтобы уменьшить вероятность ошибок времени ожидания. Время ожидания по умолчанию — 360.

  4. В палитре команд выберите Remote-SSH: Подключиться к узлу.

  5. В раскрывающемся списке выберите подключение, настроенное на первом шаге. IDE подключается в новом окне.

Подключение с использованием IntelliJ IDEs

  1. Следуйте инструкциям по настройке удаленного сервера .
  2. На новом экране подключения введите следующее:
    • Имя пользователя: root
    • Хост: <connection-name>

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

ssh <connection-name>

Открытие проектов

После подключения используйте Открыть папку из палитры команд и перейдите /Workspace/Users/<your-username>.

Замечание

Файлы в /Workspace, /Volumesа также /dbfs сохраняются во всех перезапусках кластера. Файлы в /home, /rootа также другие локальные пути являются временными и потеряны при перезапуске.

Запустить код (Visual Studio Code или Cursor)

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

  1. Запустите echo $DATABRICKS_VIRTUAL_ENV из терминала в интегрированной среде разработки.

    Пример выходных данных: /local_disk0/.ephemeral_nfs/envs/pythonEnv-xxx/bin/python

  2. Откройте палитру команд и выберите Python: Выберите интерпретатор. Вставьте выходные данные из выше.

  3. Откройте новый терминал, и виртуальная среда должна автоматически активироваться.

  4. Чтобы запустить ноутбук Jupyter, убедитесь, что виртуальная среда установлена как ядро. Щелкните "Выбрать ядро" в правом верхнем углу записной книжки.

Python файлы и .ipynb записные книжки можно запускать и отлаживать с помощью стандартных расширений Python и Jupyter.

Управление зависимостями Python

Управлять зависимостями Python можно глобально на уровне кластера или в рамках отдельных проектов с помощью записных книжек.

Установите зависимости через пользовательский интерфейс рабочей области в вычислительных > библиотеках. Они сохраняются при всех перезапусках кластера и доступны в pythonEnv-xxx. См. библиотеки кластера.

Настройка записной книжки для Project

Для зависимостей в области проекта запустите записную книжку, содержащую %pip install команды в начале каждого сеанса:

# Install from pyproject.toml
%pip install .

# Install from a requirements file
%pip install -r requirements.txt

# Install a wheel from Volumes or Workspace
%pip install /Volumes/catalog/schema/volume/your_library.whl

%pip команды включают в себя сторожевые ограничения, относящиеся к Databricks, и распространение зависимостей на узлы исполнителя Spark. Это позволяет определяемым пользователем функциям с пользовательскими зависимостями.

Дополнительные примеры см. в разделе "Управление библиотеками с помощью %pip команд".

Не нужно повторно запускать записную книжку, если сеанс повторно подключается в течение 10 минут. Это можно настроить в конфигурации SSH с помощью -shutdown-delay.

Замечание

Несколько сеансов SSH в одном кластере используют одну виртуальную среду.

Ограничения

Удаленная разработка Databricks имеет следующие ограничения:

  • Общие кластеры с несколькими пользователями и бессерверными пока не поддерживаются.
  • Расширение Databricks для Visual Studio Code и удаленной разработки еще не совместимо и не должно использоваться вместе.
  • Файлы, редактируемые за пределами /Workspace, /Volumesи /dbfs теряются при перезапуске кластера.
  • Для каждого кластера разрешено не более 10 подключений SSH.
  • Неактивные сеансы могут удаляться через 1 час.

Различия записных книжек Databricks

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

  • Файлы Python не определяют глобальные значения Databricks (например spark , или dbutils). Их необходимо импортировать явным образом с from databricks.sdk.runtime import spark.
  • Для записных книжек ipynb доступны следующие функции:
    • Databricks globals: display, displayHTML, dbutils, table, sql, udf, getArgument, sc, sqlContext, spark
    • %sql волшебная команда для выполнения ячеек SQL

Для работы с исходным кодом Python "записные книжки":

  • Выполните поиск для jupyter.interactiveWindow.cellMarker.codeRegex и задайте его значение:

    ^# COMMAND ----------|^# Databricks notebook source|^(#\\s*%%|#\\s*\\<codecell\\>|#\\s*In\\[\\d*?\\]|#\\s*In\\[ \\])
    
  • Выполните поиск для jupyter.interactiveWindow.cellMarker.default и задайте его значение:

    # COMMAND ----------
    

Устранение неполадок

В этом разделе содержатся сведения об устранении распространенных проблем.

Ошибка подключения SSH или тайм-аут

  • Убедитесь, что кластер запущен в пользовательском интерфейсе рабочей области.
  • Убедитесь, что исходящий порт 22 открыт и разрешен на ноутбуке, сети и VPN.
  • Увеличьте время ожидания SSH. См. статью "Подключение с помощью Visual Studio Code" или "Курсор".
  • Для ошибок несоответствия ключей удалите ~/.databricks/ssh-tunnel-keys и повторно выполните команду databricks ssh setup.
  • Для ошибок "идентификация удаленного узла изменилась", проверьте файл ~/.ssh/known_hosts и удалите записи, связанные с вашим кластером.
  • Сеансы SSH могут прерываться через 1 час, и не может быть более 10 подключений SSH к одному кластеру. См. Ограничения.

Ошибки проверки подлинности CLI

  • Убедитесь, что профиль CLI Databricks действителен, используя databricks auth login.
  • Убедитесь, что у вас есть CAN MANAGE разрешения на кластер.

Мой код не работает

Файлы исчезают или среда сбрасывается после перезапуска кластера

  • Файлы в /Workspace, /Volumes и /dbfs точках монтирования сохраняются после перезапуска кластера. Файлы в /home, /rootа также другие локальные пути являются временными и потеряны при перезапуске.
  • Используйте управление библиотекой кластера для постоянных зависимостей. При необходимости автоматизируйте переустановки с помощью скриптов инициализации. См. статью "Что такое скрипты инициализации?".

Ошибка при настройке SSH в Windows (WSL)

Запустите databricks ssh setup непосредственно в Windows, а не в WSL. Экземпляр Windows VS Code не может найти конфигурации SSH, созданные на стороне WSL.

Часто задаваемые вопросы

Как удаленная разработка отличается от Databricks Connect?

Databricks Connect позволяет создавать код с помощью API Spark и выполнять их удаленно на вычислительных ресурсах Databricks, а не в локальном сеансе Spark. Расширение Databricks Visual Studio Code использует Databricks Connect для обеспечения встроенной отладки пользовательского кода в Databricks.

Удаленная разработка позволяет получить доступ к рабочей области из интегрированной среды разработки и перемещать всю среду разработки в кластер — Python, ядро и все выполнение выполняется в Databricks с полным доступом к ресурсам кластера.

Как защищены код и данные?

Весь код выполняется внутри вашего облачного VPC Databricks. Данные или код не покидают безопасную среду. Трафик SSH полностью зашифрован.

Какие интегрированные среды разработки поддерживаются?

Visual Studio Code и Cursor официально поддерживаются. Любая интегрированная среда разработки с возможностями SSH совместима, но тестируются только VS Code и Cursor.

Доступны ли все функции записной книжки Databricks из интегрированной среды разработки?

Некоторые функции, такие как display(), dbutilsи %sql доступны с ограничениями или ручной настройкой. См. различия записных книжек Databricks.

Запускается ли кластер автоматически при подключении с помощью туннеля SSH?

Да, но если для запуска кластера требуется больше времени ожидания подключения, попытка подключения завершится ошибкой. Чтобы предотвратить это, увеличьте значение Remote.SSH: подключите время ожидания из палитры команд (или remote.SSH.connectTimeout в settings.json), чтобы уменьшить вероятность ошибок времени ожидания.

Как узнать, запущен ли кластер?

Перейдите к вычислению в пользовательском интерфейсе рабочей области Databricks и проверьте состояние кластера. Кластер должен показывать состояние работа, чтобы подключение SSH работало.

Как отключить сеанс SSH/IDE?

Сеанс можно отключить, закрыв окно интегрированной среды разработки, используя параметр "Отключить " в интегрированной среде разработки, закрыв терминал SSH или выполнив exit команду в терминале.

Как остановить кластер и избежать расходов, когда я не работаю?

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

Задайте короткую политику автоматического завершения в кластере из пользовательского интерфейса рабочей области. После отключения сервер SSH ожидает в течение shutdown-delay периода (по умолчанию: 10 минут), затем применяется время ожидания простоя для кластера.

Как обрабатывать постоянные зависимости?

Зависимости, установленные во время сеанса, теряются после перезапуска кластера. Используйте постоянное хранилище (/Workspace/Users/<your-username>) для требований и сценариев установки. Используйте библиотеки кластера или скрипты инициализации для автоматизации.

Какие методы проверки подлинности поддерживаются?

Проверка подлинности использует CLI Databricks и ваш файл конфигурации профилей ~/.databrickscfg. Ключи SSH обрабатываются Databrick Remote Development.

Можно ли подключиться к внешним базам данных или службам из кластера?

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

Можно ли использовать дополнительные расширения интегрированной среды разработки?

Большинство расширений работают при установке в удаленном сеансе SSH в зависимости от интегрированной среды разработки и кластера. Visual Studio Code по умолчанию не устанавливает локальные расширения на удаленных узлах. Их можно установить вручную, открыв панель расширений и включив локальные расширения на удаленном узле. Вы также можете настроить Visual Studio Code для удаленной установки определенных расширений. См. статью "Подключение к Databricks".

Да, однако администраторы рабочей среды должны внести в белый список URL-адреса торговых площадок расширений VS Code и Cursor. Локальные компьютеры пользователей также должны иметь возможность доступа к Интернету.