Compartir a través de


Configuración de proceso para Databricks Connect

Nota:

Este artículo describe Databricks Connect para Databricks Runtime 13.3 LTS y versiones posteriores.

En este artículo, configurará las propiedades para establecer una conexión entre Databricks Connect y el clúster de Azure Databricks o el proceso sin servidor. Esta información se aplica a la versión de Python y Scala de Databricks Connect a menos que se indique lo contrario.

Databricks Connect le permite conectar clústeres de Azure Databricks a entornos de desarrollo integrado populares, como Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, servidores de cuadernos y otras aplicaciones personalizadas. Consulte ¿Qué es Databricks Connect?.

Requisitos

Para configurar una conexión al proceso de Databricks, debe tener:

Configurar

Antes de comenzar, necesitará lo siguiente:

Nota:

Configurar una conexión a un clúster

Hay varias maneras de configurar la conexión al clúster. Databricks Connect busca propiedades de configuración en el orden siguiente y usa la primera configuración que encuentra. Para obtener información de configuración avanzada, consulte Uso avanzado de Databricks Connect para Python.

  1. Método remote() de la clase DatabricksSession.
  2. Un perfil de configuración de Databricks
  3. La variable de entorno DATABRICKS_CONFIG_PROFILE
  4. Una variable de entorno para cada propiedad de configuración
  5. Un perfil de configuración de Azure Databricks denominado DEFAULT

El método remote() de la clase DatabricksSession

Para esta opción, que solo se aplica a la autenticación de token de acceso personal de Azure Databricks, especifica el nombre de la instancia del área de trabajo, el token de acceso personal de Azure Databricks y el identificador del clúster.

Puede inicializar la DatabricksSession clase de varias maneras:

  • Establezca los campos host, token y cluster_id en DatabricksSession.builder.remote().
  • Use la clase Config del SDK de Databricks.
  • Especifique un perfil de configuración de Databricks junto con el campo cluster_id.

En lugar de especificar estas propiedades de conexión en el código, Databricks recomienda configurar las propiedades mediante las variables de entorno o los archivos de configuración, como se describe en esta sección. En los ejemplos de código siguientes se supone que se proporciona alguna implementación de las funciones propuestas de retrieve_* para obtener las propiedades necesarias del usuario o de algún otro almacén de configuración, como Azure KeyVault.

El código de cada uno de estos enfoques es el siguiente:

Python

# Set the host, token, and cluster_id fields in DatabricksSession.builder.remote.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.remote(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
).getOrCreate()

Scala

// Set the host, token, and clusterId fields in DatabricksSession.builder.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder()
    .host(retrieveWorkspaceInstanceName())
    .token(retrieveToken())
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Use the Databricks SDK's Config class.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Use the Databricks SDK's Config class.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setHost(retrieveWorkspaceInstanceName())
    .setToken(retrieveToken())
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Specify a Databricks configuration profile along with the `cluster_id` field.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Un perfil de configuración de Databricks

En el caso de esta opción, cree o identifique un perfil de configuración de Azure Databricks que contenga el campo cluster_id y cualquier otro campo necesario para el tipo de autenticación de Databricks que quiere usar.

Los campos de perfil de configuración necesarios para cada tipo de autenticación son los siguientes:

A continuación, establezca el nombre de este perfil de configuración a través de la clase de configuración.

Puede especificar cluster_id de dos maneras:

  • Incluya el campo cluster_id en el perfil de configuración y, luego, especifique el nombre del perfil de configuración.
  • Especifique el nombre del perfil de configuración junto con el campo cluster_id.

Si ya ha establecido la variable de entorno DATABRICKS_CLUSTER_ID con el identificador del clúster, no es necesario también especificar cluster_id.

El código de cada uno de estos enfoques es el siguiente:

Python

# Include the cluster_id field in your configuration profile, and then
# just specify the configuration profile's name:
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.profile("<profile-name>").getOrCreate()

Scala

// Include the cluster_id field in your configuration profile, and then
// just specify the configuration profile's name:
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
    val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .getOrCreate()

Python

# Specify the configuration profile name along with the cluster_id field.
# In this example, retrieve_cluster_id() assumes some custom implementation that
# you provide to get the cluster ID from the user or from some other
# configuration store:
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

La variable de entorno DATABRICKS_CONFIG_PROFILE

En el caso de esta opción, cree o identifique un perfil de configuración de Azure Databricks que contenga el campo cluster_id y cualquier otro campo necesario para el tipo de autenticación de Databricks que quiere usar.

Si ya ha establecido la variable de entorno DATABRICKS_CLUSTER_ID con el identificador del clúster, no es necesario también especificar cluster_id.

Los campos de perfil de configuración necesarios para cada tipo de autenticación son los siguientes:

Establezca la variable de entorno DATABRICKS_CONFIG_PROFILE con el nombre de este perfil de configuración. A continuación, inicialice la DatabricksSession clase :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Una variable de entorno para cada propiedad de configuración

En esta opción, establezca la variable de entorno DATABRICKS_CLUSTER_ID y cualquier otra variable de entorno necesaria para el tipo de autenticación de Databricks que quiere usar.

Las variables de entorno necesarias para cada tipo de autenticación son las siguientes:

A continuación, inicialice la DatabricksSession clase :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Un perfil de configuración de Databricks denominado DEFAULT

En el caso de esta opción, cree o identifique un perfil de configuración de Azure Databricks que contenga el campo cluster_id y cualquier otro campo necesario para el tipo de autenticación de Databricks que quiere usar.

Si ya ha establecido la variable de entorno DATABRICKS_CLUSTER_ID con el identificador del clúster, no es necesario también especificar cluster_id.

Los campos de perfil de configuración necesarios para cada tipo de autenticación son los siguientes:

Asigne a este perfil de configuración el nombre DEFAULT.

A continuación, inicialice la DatabricksSession clase :

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Configurar conexiones a procesos sin servidor

Importante

Esta característica está en versión preliminar pública.

Databricks Connect para Python admite la conexión a proceso sin servidor. Para usar esta característica, se deben cumplir los requisitos para conectarse a procesos sin servidor. Vea Requisitos.

Importante

Esta característica tiene las siguientes limitaciones:

Puede configurar una conexión a un proceso sin servidor de una de las maneras siguientes:

  • Establezca la variable de entorno local DATABRICKS_SERVERLESS_COMPUTE_ID en auto. Si se establece esta variable de entorno, Databricks Connect omite el cluster_id.

  • En un perfil de configuración local de Databricks, establezca serverless_compute_id = autoy, a continuación, haga referencia a ese perfil desde el código.

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    
  • O bien, use cualquiera de las siguientes opciones:

from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()

Nota:

La sesión de proceso sin servidor agota el tiempo de espera después de 10 minutos de inactividad. Después de esto, se debe crear una nueva sesión de Spark mediante getOrCreate() para conectarse al proceso sin servidor.

Validar la conexión a Databricks

Para validar el entorno, las credenciales predeterminadas y la conexión al proceso están configuradas correctamente para Databricks Connect, ejecute el comando databricks-connect test, que produce un error con un código de salida distinto de cero y un mensaje de error correspondiente cuando detecta cualquier incompatibilidad en la configuración.

databricks-connect test

En Databricks Connect 14.3 y versiones posteriores, también puede validar el entorno mediante validateSession():

DatabricksSession.builder.validateSession(True).getOrCreate()

Deshabilitación de Databricks Connect

Los servicios de Databricks Connect (y Spark Connect subyacente) se pueden deshabilitar en cualquier clúster determinado.

Para deshabilitar el servicio de Databricks Connect, define la siguiente configuración de Spark en el clúster.

spark.databricks.service.server.enabled false