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:
- Databricks Connect instalado. Para conocer los requisitos de instalación y los pasos para versiones de idioma específicas de Databricks Connect, consulte:
- Una cuenta y un área de trabajo de Azure Databricks con Unity Catalog habilitado. Consulte Configurar y administrar Unity Catalog y Habilite un área de trabajo para Unity Catalog.
- Un clúster de Azure Databricks con Databricks Runtime 13.3 LTS o superior.
- La versión de Databricks Runtime del clúster debe ser igual o superior a la versión del paquete de Databricks Connect. Databricks recomienda usar siempre el paquete más reciente de Databricks Connect que coincida con la versión de Databricks Runtime. Para usar características que están disponibles en versiones posteriores del entorno de ejecución de Databricks, debe actualizar el paquete de Databricks Connect. Vea las notas de la versión de Databricks Connect para obtener una lista de las versiones disponibles de Databricks Connect. Para obtener las notas de la versión de Databricks Runtime, vea Versiones de las notas de la versión y compatibilidad de Databricks Runtime.
- El clúster debe usar un modo de acceso al clúster de Asignado o Compartido. Consulte Modos de acceso.
Configurar
Antes de comenzar, necesitará lo siguiente:
- Si se conecta a un clúster, el identificador del clúster. Puede recuperar el identificador del clúster de la dirección URL. Consulte Dirección URL e identificador del clúster.
- Nombre de instancia de área de trabajo de Azure Databricks. Este es el valor de Nombre de host del servidor para su proceso. Vea Obtener detalles de conexión para un recurso de proceso de Azure Databricks.
- Cualquier otra propiedad necesaria para el tipo de autenticación de Databricks que quiera usar.
Nota:
Autenticación de usuario a máquina (U2M) de OAuth se admite en el SDK de Databricks para Python 0.19.0 y versiones posteriores. Actualice la versión instalada del proyecto de código del SDK de Databricks para Python a 0.19.0 o posterior para usar la autenticación U2M de OAuth. Consulte Introducción al SDK de Databricks para Python.
Para la autenticación U2M de OAuth, debe usar la CLI de Databricks para autenticarse antes de ejecutar el código de Python. Consulte el Tutorial.
Autenticación de máquina a máquina (M2M) de OAuth autenticación de máquina a máquina (M2M) de OAuth se admite en el SDK de Databricks para Python 0.18.0 y versiones posteriores. Actualice la versión instalada del proyecto de código del SDK de Databricks para Python a 0.18.0 o superior para usar la autenticación de OAuth M2M. Consulte Introducción al SDK de Databricks para Python.
El SDK de Databricks para Python aún no ha implementado la autenticación de identidades administradas de Azure.
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.
- Método remote() de la clase DatabricksSession.
- Un perfil de configuración de Databricks
- La variable de entorno DATABRICKS_CONFIG_PROFILE
- Una variable de entorno para cada propiedad de configuración
- 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
ycluster_id
enDatabricksSession.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:
- Para la autenticación de token de acceso personal de Azure Databricks:
host
ytoken
. - Para la autenticación de máquina a máquina (M2M) de OAuth (donde se admita):
host
,client_id
yclient_secret
. - Para autenticación de usuario a máquina (U2M) de OAuth (donde se admite):
host
. - Para la autenticación de la entidad de servicio de Microsoft Entra ID (anteriormente, Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
y posiblementeazure_workspace_resource_id
. - Para la Autenticación de la CLI de Azure:
host
. - Para una Autenticación de identidades administradas de Azure (donde se admita):
host
,azure_use_msi
,azure_client_id
y posiblementeazure_workspace_resource_id
.
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:
- Para la autenticación de token de acceso personal de Azure Databricks:
host
ytoken
. - Para la autenticación de máquina a máquina (M2M) de OAuth (donde se admita):
host
,client_id
yclient_secret
. - Para autenticación de usuario a máquina (U2M) de OAuth (donde se admite):
host
. - Para la autenticación de la entidad de servicio de Microsoft Entra ID (anteriormente, Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
y posiblementeazure_workspace_resource_id
. - Para la Autenticación de la CLI de Azure:
host
. - Para una Autenticación de identidades administradas de Azure (donde se admita):
host
,azure_use_msi
,azure_client_id
y posiblementeazure_workspace_resource_id
.
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:
- Para la autenticación de token de acceso personal de Azure Databricks:
DATABRICKS_HOST
yDATABRICKS_TOKEN
. - Para la autenticación de máquina a máquina (M2M) de OAuth (donde se admita):
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
yDATABRICKS_CLIENT_SECRET
. - Para autenticación de usuario a máquina (U2M) de OAuth (donde se admite):
DATABRICKS_HOST
. - Para la autenticación de la entidad de servicio de Microsoft Entra ID (anteriormente, Azure Active Directory):
DATABRICKS_HOST
,ARM_TENANT_ID
,ARM_CLIENT_ID
,ARM_CLIENT_SECRET
y posiblementeDATABRICKS_AZURE_RESOURCE_ID
. - Para la Autenticación de la CLI de Azure:
DATABRICKS_HOST
. - Para una Autenticación de identidades administradas de Azure (donde se admita):
DATABRICKS_HOST
,ARM_USE_MSI
,ARM_CLIENT_ID
y posiblementeDATABRICKS_AZURE_RESOURCE_ID
.
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:
- Para la autenticación de token de acceso personal de Azure Databricks:
host
ytoken
. - Para la autenticación de máquina a máquina (M2M) de OAuth (donde se admita):
host
,client_id
yclient_secret
. - Para autenticación de usuario a máquina (U2M) de OAuth (donde se admite):
host
. - Para la autenticación de la entidad de servicio de Microsoft Entra ID (anteriormente, Azure Active Directory):
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
y posiblementeazure_workspace_resource_id
. - Para la Autenticación de la CLI de Azure:
host
. - Para una Autenticación de identidades administradas de Azure (donde se admita):
host
,azure_use_msi
,azure_client_id
y posiblementeazure_workspace_resource_id
.
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:
- Esta característica solo se admite en Databricks Connect para Python.
- Todas las limitaciones de Databricks Connect para Python
- Todas las limitaciones de proceso sin servidor
- Solo se pueden usar las dependencias de Python que se incluyen como parte del entorno de proceso sin servidor para UDF. Consulte Imágenes de cliente sin servidor. No se pueden instalar dependencias adicionales.
- No se admiten UDF con módulos personalizados.
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
enauto
. Si se establece esta variable de entorno, Databricks Connect omite elcluster_id
.En un perfil de configuración local de Databricks, establezca
serverless_compute_id = auto
y, 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