Утилиты Databricks с Databricks Connect для Python

Заметка

В этой статье рассматривается Databricks Connect для Databricks Runtime 13.3 LTS и более поздних версий.

В этой статье описывается, как использовать Databricks Utilities с Databricks Connect для Python. Databricks Connect позволяет подключать популярные среды IDE, серверы блокнотов и пользовательские приложения к кластерам Azure Databricks. См. Databricks Connect.

Прежде чем начать использовать Databricks Connect, необходимо настроить клиент Databricks Connect.

Сведения о версии Scala этой статьи см. в разделе Служебные программы Databricks с Databricks Connect для Scala.

Доступные служебные программы Databricks

Вы используете Databricks Connect для доступа к служебным программам Databricks следующим образом:

  • WorkspaceClient Используйте переменную класса dbutils для доступа к служебным программам Databricks. Класс WorkspaceClient принадлежит пакету SDK Databricks для Python и входит в Databricks Connect.
  • Используйте dbutils.fs для доступа к служебной программе Databricks utilities fs.
  • Используйте dbutils.secrets для доступа к утилите секретных данных Databricks .
  • Используйте dbutils.widgets для создания и чтения локальных виджетов, чтобы код, написанный для утилиты Databricks Utilities widgets, работал локально. Эти виджеты существуют только в вашей локальной сессии и не могут получать удалённые параметры блокнота или задачи задания. Чтение виджета, который вы не создали локально, вызывает KeyError или возвращает значение по умолчанию, если вы используете getArgument.
  • Используйте dbutils.jobs.taskValues, чтобы выполнять локальную отладку кода, написанного для утилиты jobs в Databricks Utilities. Значения задач не обмениваются при удалённом выполнении заданий: set ничего не делает, и get возвращает значение своего аргумента debugValue, либо вызывает ошибку, если вы не передаёте debugValue. Чтобы установить или получить значения задачи для последующих задач, запускайте код как задачу задания.

Никакие функции утилит Databricks, кроме предыдущих утил, не доступны через dbutils.

Совет

Вы также можете использовать включенный пакет SDK Databricks для Python для доступа к любому доступному REST API Databricks, а не только к предыдущим API служебных программ Databricks. См. databricks-sdk в PyPI.

Инициализируйте WorkspaceClient

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

  • Жестко закодируйте URL-адрес рабочей области и маркер доступа прямо в коде, и затем инициализируйте WorkspaceClient следующим образом. Хотя этот параметр поддерживается, Databricks не рекомендует этот параметр, так как он может предоставлять конфиденциальную информацию, например маркеры доступа, если код проверяется в систему контроля версий или иначе распространяется:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(host  = f"https://{retrieve_workspace_instance_name()}",
                        token = retrieve_token())
    
  • Создайте или укажите профиль конфигурации, содержащий поля host и token, а затем инициализируйте WorkspaceClient следующим образом:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(profile = "<profile-name>")
    
  • Задайте переменные среды DATABRICKS_HOST и DATABRICKS_TOKEN таким же образом, как и для Databricks Connect, а затем инициализировать WorkspaceClient следующим образом:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    

Пакет SDK Databricks для Python не распознает переменную среды SPARK_REMOTE для Databricks Connect.

Дополнительные параметры проверки подлинности Azure Databricks для пакета SDK Databricks для Python, а также способы инициализации AccountClient в пакетах SDK Databricks для доступа к доступным REST API Databricks на уровне учетной записи, а не на уровне рабочей области, см. в разделе databricks-sdk в PyPI.

Пример. Создание файла в томе

В следующем примере показано, как использовать пакет SDK Databricks для Python для автоматизации служебных программ Databricks. В этом примере создается файл с именем zzz_hello.txt в пути к тому каталога Unity в рабочей области, считывает данные из файла, а затем удаляет файл. В этом примере предполагается, что переменные среды DATABRICKS_HOST и DATABRICKS_TOKEN уже установлены:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

file_path = "/Volumes/main/default/my-volume/zzz_hello.txt"
file_data = "Hello, Databricks!"
fs = w.dbutils.fs

fs.put(
  file      = file_path,
  contents  = file_data,
  overwrite = True
)

print(fs.head(file_path))

fs.rm(file_path)

См. также Взаимодействие с dbutils в документации по SDK Databricks для Python.