Compartir a través de


Uso avanzado de Databricks Connect para Python

Nota:

En este artículo se habla de 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

Puede utilizar las opciones que se describen en Configuración de una conexión a un clúster para conectarse a su clúster, pero una opción más avanzada consiste en hacerlo mediante la cadena de conexión de Spark Connect. Puede pasar la cadena en la función remote, o bien establecer la variable de entorno SPARK_REMOTE.

Nota:

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

Para establecer la cadena de conexión mediante la función 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()

Como alternativa, establezca la variable de entorno SPARK_REMOTE:

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

Y, a continuación, inicialice la clase DatabricksSession como se indica:

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Shell de Pyspark

Databricks Connect para Python incluye binario pyspark, que es una REPL de PySpark (una shell de Spark) configurada para usar Databricks Connect.

Cuando se inicia sin parámetros adicionales, el shell recoge las credenciales predeterminadas del entorno (por ejemplo, las DATABRICKS_ variables de entorno o el DEFAULT perfil de configuración) para conectarse al clúster de Azure Databricks. Para obtener información sobre cómo configurar una conexión, consulte Configuración de proceso para Databricks Connect.

  1. Para iniciar el shell de Spark y conectarlo al clúster en ejecución, ejecute uno de los siguientes comandos desde el entorno virtual activado de Python:

    pyspark
    

    Aparece el shell de Spark, por ejemplo:

    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'.
    >>>
    

    Una vez que se inicia el shell, el spark objeto está disponible para ejecutar comandos de Apache Spark en el clúster de Databricks. Ejecute un comando pySpark simple, como spark.range(1,10).show(). Si no hay errores, se ha conectado correctamente.

  2. Consulte Análisis interactivo con el shell de Spark para obtener información sobre cómo usar el shell de Spark con Python para ejecutar comandos en el proceso.

    Use la variable integrada spark para representar el elemento SparkSession del clúster en ejecución, por ejemplo:

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

    Todo el código de Python se ejecuta localmente, mientras que todo el código de PySpark que involucra operaciones de DataFrame se ejecuta en el clúster en el área de trabajo remota de Azure Databricks y las respuestas de ejecución se envían de vuelta al autor de la llamada local.

  3. Para detener el shell de Spark, presiona Ctrl + d o Ctrl + z, o ejecute el comando quit() o exit().

Encabezados HTTP adicionales

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

Algunos usuarios avanzados pueden optar por instalar un servicio de proxy entre el cliente y el clúster de Azure Databricks para tener un mejor control sobre las solicitudes procedentes de sus clientes.

Los servidores proxy, en algunos casos, pueden requerir encabezados personalizados en las solicitudes HTTP.

El método headers() se puede usar para agregar encabezados personalizados a sus solicitudes HTTP.

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 de entorno GRPC_DEFAULT_SSL_ROOTS_FILE_PATH 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.

Por ejemplo, establezca esta variable de entorno en el código de Python de la siguiente manera:

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.

Registro y depuración de registros

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

Los registros se emiten a la secuencia de errores estándar (stderr) y, de forma predeterminada, solo se emiten registros en el nivel WARN y superiores.

Establecer una variable de entorno SPARK_CONNECT_LOG_LEVEL=debug modificará este valor predeterminado e imprimirá todos los mensajes de registro en el nivel de DEBUG y superior.