Comparteix via


Uso avanzado de Databricks Connect

Nota:

En este artículo se describe Databricks Connect para Databricks Runtime 14.0 y versiones posteriores.

En este artículo se describen los temas que van más allá de la configuración básica de Databricks Connect.

Configuración de la cadena de conexión de Spark Connect

Además de conectarse al clúster mediante las opciones descritas en Configuración de una conexión a un clúster, una opción más avanzada consiste en conectarse mediante la cadena de conexión de Spark Connect. Puede pasar la cadena a la función remote o establecer la variable de entorno SPARK_REMOTE.

Nota:

Solo puede usar un token de acceso personal de Databricks para autenticación para conectarse mediante la cadena de conexión Spark Connect.

Pitón

Para establecer la cadena de conexión mediante la remote función :

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()

Como alternativa, establezca la variable de SPARK_REMOTE entorno:

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

A continuación, inicialice la DatabricksSession clase :

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

Establezca la variable de entorno SPARK_REMOTE.

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

A continuación, inicialice la DatabricksSession clase :

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder.getOrCreate()

Uso del servidor spark Connect con Databricks Connect

Opcionalmente, puede ejecutar Databricks Connect en un servidor spark Connect de código abierto.

Importante

Algunas características disponibles en Databricks Runtime y Databricks Connect son exclusivas de Databricks o aún no se han publicado en Apache Spark de código abierto. Si el código se basa en estas características, es posible que se produzcan errores en los pasos siguientes.

  1. Inicie un servidor de Spark Connect local. Consulte Uso de Spark Connect.

  2. Configurar Databricks Connect. Establezca la variable SPARK_REMOTE de entorno para que apunte al servidor local de Spark Connect. Consulte Conexión a Spark Connect mediante clientes.

    export SPARK_REMOTE="sc://localhost"
    
  3. Inicialice la sesión de Databricks:

    Pitón

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

    Scala

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

Encabezados HTTP adicionales

Databricks Connect se comunica con los clústeres de Databricks mediante gRPC a través de HTTP/2.

Para tener un mejor control sobre las solicitudes procedentes de los clientes, los usuarios avanzados pueden optar por instalar un servicio proxy entre el cliente y el clúster de Azure Databricks. En algunos casos, los servidores proxy pueden requerir encabezados personalizados en las solicitudes HTTP.

Use el método header() para agregar encabezados personalizados a solicitudes HTTP:

Pitón

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()

Certificados

Si el clúster se basa en un certificado SSL/TLS personalizado para resolver un nombre de dominio completo (FQDN) del área de trabajo de Azure Databricks, debe establecer la variable GRPC_DEFAULT_SSL_ROOTS_FILE_PATH de entorno en la máquina de desarrollo local. Esta variable de entorno debe establecerse en la ruta de acceso completa al certificado instalado en el clúster.

Pitón

En el ejemplo siguiente se establece esta variable de entorno:

import os

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

Para ver otras formas de establecer variables de entorno, consulte la documentación del sistema operativo.

Scala

Java y Scala no ofrecen formas de configurar variables de entorno mediante programación. Consulte la documentación del sistema operativo o del IDE para obtener información sobre cómo configurarlas como parte de la aplicación.

Registro y depuración de registros

Pitón

Databricks Connect para Python genera registros mediante el registro estándar de Python.

Los registros se emiten al flujo de error estándar (stderr) y, de forma predeterminada, se desactivan. Establecer una variable SPARK_CONNECT_LOG_LEVEL=debug de entorno modificará este valor predeterminado e imprimirá todos los mensajes de registro en el DEBUG nivel y versiones posteriores.

Scala

Databricks Connect para Scala usa el registro de SLF4J y no se envía con ningún proveedor SLF4J.

Se espera que las aplicaciones que usan Databricks Connect incluyan un proveedor SLF4J y, en algunos casos, configuradas para imprimir los mensajes de registro (logs).

  • La opción más sencilla es incluir el proveedor slf4j-simple que imprime los mensajes de registro en el INFO nivel y superiores al flujo de error estándar (stderr).
  • Una alternativa más configurable es usar el proveedor slf4j-reload4j que recoge la configuración de un log4j.properties archivo en la ruta de clase.

En el ejemplo siguiente se muestra un archivo simple 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

En el ejemplo anterior, los registros de depuración se imprimen si el registrador raíz (o un registrador específico) está configurado en el DEBUG nivel:

log4j.rootLogger=DEBUG,stderr