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. REPL se puede iniciar mediante la ejecución de:

pyspark

Cuando se inicia sin parámetros adicionales, recoge las credenciales predeterminadas del entorno (por ejemplo, las DATABRICKS_variables de entorno o el DEFAULTperfil de configuración) para conectarse al clúster de Azure Databricks.

Una vez que se inicia REPL, el objeto spark está disponible para ejecutar comandos de Apache Spark en el clúster de Databricks.

>>> spark.range(3).show()
+---+
| id|
+---+
|  0|
|  1|
|  2|
+---+

REPL se puede configurar para conectarse a otro remoto mediante la configuración del--remote parámetro con una cadena de conexión de Spark connect.

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

Para detener el shell, presiona Ctrl + d o Ctrl + z, o bien ejecute los 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.