Расширенное использование Databricks Connect

Замечание

В этой статье рассматривается Databricks Connect для Databricks Runtime версии 14.0 и выше.

В этой статье описываются разделы, которые выходят за рамки базовой настройки Databricks Connect.

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

Помимо подключения к кластеру с помощью параметров, описанных в разделе "Настройка подключения к кластеру", более расширенный вариант подключения осуществляется с помощью строки подключения Spark Connect. Можно передать строку в remote функции или задать SPARK_REMOTE переменную среды.

Замечание

Для подключения с помощью строки подключения Spark Connect можно использовать только аутентификацию с персональным токеном доступа Databricks.

Питон

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

from databricks.connect import DatabricksSession

workspace_instance_name = retrieve_workspace_instance_name()
token                   = retrieve_token()
cluster_id              = retrieve_cluster_id()

spark = DatabricksSession.builder.remote(
   f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()

Кроме того, задайте SPARK_REMOTE переменную среды:

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Затем инициализировать DatabricksSession класс:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

SPARK_REMOTE Задайте переменную среды:

sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>

Затем инициализировать DatabricksSession класс:

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.getOrCreate()

Использование сервера Spark Connect с Databricks Connect

При необходимости можно запустить Databricks Connect на сервере Spark Connect с открытым исходным кодом.

Это важно

Некоторые функции, доступные в Databricks Runtime и Databricks Connect, являются эксклюзивными для Databricks или еще не выпущены в Apache Spark с открытым исходным кодом. Если код использует эти функции, следующие шаги могут завершиться ошибкой.

  1. Запустите локальный сервер Spark Connect. Узнайте , как использовать Spark Connect

  2. Настройка Databricks Connect. Задайте переменную SPARK_REMOTE среды, чтобы указать локальный сервер Spark Connect. См. статью "Подключение к Spark Connect с помощью клиентов".

    export SPARK_REMOTE="sc://localhost"
    
  3. Инициализация сессии Databricks:

    Питон

    from databricks.connect import DatabricksSession
    
    spark = DatabricksSession.builder.getOrCreate()
    

    Scala

    import com.databricks.connect.DatabricksSession
    
    val spark = DatabricksSession.builder.getOrCreate()
    

Дополнительные заголовки HTTP

Databricks Connect взаимодействует с кластерами Databricks через gRPC по протоколу HTTP/2.

Чтобы лучше контролировать запросы, поступающие от клиентов, расширенные пользователи могут выбрать установку прокси-службы между клиентом и кластером Azure Databricks. В некоторых случаях прокси-серверы могут требовать пользовательские заголовки в HTTP-запросах.

Используйте метод header() для добавления пользовательских заголовков в HTTP-запросы:

Питон

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.header("x-custom-header", "value").getOrCreate()

Сертификаты

Если кластер использует пользовательский сертификат SSL/TLS для разрешения полного доменного имени рабочей области Azure Databricks (FQDN), необходимо задать переменную GRPC_DEFAULT_SSL_ROOTS_FILE_PATH среды на локальном компьютере разработки. Эта переменная среды должна иметь полный путь к установленному сертификату в кластере.

Питон

Следующий пример задает эту переменную среды:

import os

os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"

Другие способы задания переменных среды см. в документации операционной системы.

Scala

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

Ведение журнала и отладка журналов

Питон

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

Логи создаются в стандартном потоке ошибок (stderr) и по умолчанию они отключены. Установка переменной среды изменит этот параметр SPARK_CONNECT_LOG_LEVEL=debug по умолчанию и распечатает все сообщения журнала на DEBUG уровне и выше.

Scala

Databricks Connect для Scala использует ведение журнала SLF4J и не поставляется с какими-либо поставщиками SLF4J.

Ожидается, что приложения, использующие Databricks Connect, включают поставщика SLF4J и в некоторых случаях настроены так, чтобы печатать сообщения журнала.

  • Самый простой вариант — включить поставщик slf4j-simple, который печатает сообщения журнала на уровне INFO и выше в стандартный поток ошибок (stderr).
  • Более настраиваемая альтернатива — использовать поставщик slf4j-reload4j , который выбирает конфигурацию из log4j.properties файла в classpath.

В следующем примере показан простой log4j.properties файл.

log4j.rootLogger=INFO,stderr

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n

В предыдущем примере журналы отладки печатаются, если корневой логгер (или определённый логгер) настроен на уровне DEBUG.

log4j.rootLogger=DEBUG,stderr