Расширенное использование Databricks Connect для Python
Примечание.
В этой статье описывается Databricks Connect for Databricks Runtime 14.0 и более поздних версий.
В этой статье описываются разделы, которые выходят за рамки базовой настройки Databricks Connect.
Настройка строка подключения Spark Connect
Помимо подключения к кластеру с помощью параметров, описанных в разделе "Настройка подключения к кластеру", более расширенный вариант подключения осуществляется с помощью строка подключения Spark Connect. Можно передать строку в remote
функции или задать SPARK_REMOTE
переменную среды.
Примечание.
Для подключения с помощью строка подключения Spark Connect можно использовать только проверку подлинности личного маркера доступа Databricks.
Чтобы задать строка подключения с помощью remote
функции:
# Set the Spark Connect connection string in DatabricksSession.builder.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()
Оболочка Pyspark
Databricks Connect для Python поставляется с двоичным файлом pyspark
, который является pySpark REPL (оболочка Spark), настроенной для использования Databricks Connect.
При запуске без дополнительных параметров оболочка получает учетные данные по умолчанию из среды (например, DATABRICKS_
переменные среды или DEFAULT
профиль конфигурации), чтобы подключиться к кластеру Azure Databricks. Сведения о настройке подключения см. в разделе "Конфигурация вычислений" для Databricks Connect.
Чтобы запустить оболочку Spark и подключить ее к работающему кластеру, выполните одну из следующих команд из активированной виртуальной среды Python:
pyspark
Появится оболочка Spark, например:
Python 3.10 ... [Clang ...] on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
После запуска
spark
оболочки объект доступен для выполнения команд Apache Spark в кластере Databricks. Выполните простую команду PySpark, напримерspark.range(1,10).show()
. Если ошибки отсутствуют, вы успешно подключились.-
Используйте встроенную
spark
переменную для представленияSparkSession
в работающем кластере, например:>>> df = spark.read.table("samples.nyctaxi.trips") >>> df.show(5) +--------------------+---------------------+-------------+-----------+----------+-----------+ |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip| +--------------------+---------------------+-------------+-----------+----------+-----------+ | 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171| | 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110| | 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023| | 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017| | 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282| +--------------------+---------------------+-------------+-----------+----------+-----------+ only showing top 5 rows
Весь код Python выполняется локально, в то время как весь код PySpark с участием операций DataFrame выполняется в кластере в удаленной рабочей области Azure Databricks и ответы запуска отправляются обратно в локальный вызывающий объект.
Чтобы остановить оболочку Spark, нажмите
Ctrl + d
илиCtrl + z
выполните команду или выполните командуquit()
.exit()
Дополнительные заголовки HTTP
Databricks Connect взаимодействует с кластерами Databricks через gRPC по протоколу HTTP/2.
Некоторые расширенные пользователи могут установить прокси-службу между клиентом и кластером Azure Databricks, чтобы лучше контролировать запросы, поступающие от своих клиентов.
В некоторых случаях прокси-серверы могут требовать пользовательские заголовки в HTTP-запросах.
Этот headers()
метод можно использовать для добавления пользовательских заголовков в http-запросы.
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
Сертификаты
Если кластер использует пользовательский сертификат SSL/TLS для разрешения полного доменного имени рабочей области Azure Databricks (FQDN), необходимо задать переменную GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
среды на локальном компьютере разработки. Эта переменная среды должна иметь полный путь к установленному сертификату в кластере.
Например, вы задаете эту переменную среды в коде Python следующим образом:
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
Другие способы задания переменных среды см. в документации операционной системы.
Ведение журнала и отладка журналов
Databricks Connect для Python создает журналы с помощью стандартного ведения журнала Python.
Журналы создаются в стандартном потоке ошибок (stderr) и по умолчанию создаются только журналы на уровне WARN и выше.
Установка переменной среды изменит этот параметр SPARK_CONNECT_LOG_LEVEL=debug
по умолчанию и распечатает все сообщения журнала на DEBUG
уровне и выше.