Configuration de calcul pour Databricks Connect
Remarque
Cet article présente Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.
Dans cet article, vous allez configurer des propriétés pour établir une connexion entre Databricks Connect et votre cluster Azure Databricks ou votre calcul serverless. Ces informations s’appliquent à la version Python et Scala de Databricks Connect, sauf indication contraire.
Databricks Connect vous permet de connecter des IDE populaires tels que Visual Studio Code, PyCharm, RStudio Desktop et IntelliJ IDEA ainsi que des serveurs de notebooks et d’autres applications personnalisées aux clusters Azure Databricks. Consultez Qu’est-ce que Databricks Connect ?.
Spécifications
Pour configurer une connexion au calcul Databricks, vous devez disposer des éléments suivants :
- Databricks Connect installé. Pour connaître la configuration requise et les étapes d’installation pour des versions linguistiques spécifiques de Databricks Connect, consultez :
- Un compte et un espace de travail Azure Databricks sur lesquels Unity Catalog est activé. Consultez les pages Configurer et gérer Unity Catalog et Activer un espace de travail pour Unity Catalog.
- Un cluster Azure Databricks avec Databricks Runtime 13.3 LTS ou version ultérieure.
- La version databricks Runtime de votre cluster doit être égale ou supérieure à la version du package Databricks Connect. Databricks vous recommande d’utiliser le package le plus récent de Databricks Connect qui correspond à la version de Databricks Runtime. Pour utiliser des fonctionnalités disponibles dans les versions ultérieures de Databricks Runtime, vous devez mettre à niveau le package Databricks Connect. Consultez les notes de publication de Databricks Connect pour obtenir la liste des versions disponibles de Databricks Connect. Pour obtenir les notes de publication de Databricks Runtime, consultez l’article Versions et compatibilité des notes de publication de Databricks Runtime.
- Le cluster doit utiliser un mode d’accès au cluster attribué ou partagé. Voir Modes d’accès aux fichiers.
Programme d’installation
Avant de débuter, vous avez besoin des éléments suivants :
- Si vous vous connectez à un cluster, l’ID de votre cluster. Vous pouvez récupérer l’ID de cluster à partir de l’URL. Consultez URL et ID du cluster.
- Le nom de l’instance de l’espace de travail Azure Databricks. Il s’agit de la valeur Nom d’hôte du serveur pour votre calcul. Obtenir les détails de connexion pour une ressource de calcul Azure Databricks.
- Toutes les autres propriétés nécessaires pour le type d’authentification Databricks que vous souhaitez utiliser.
Remarque
L’authentification utilisateur à machine OAuth (U2M) est prise en charge sur le Kit de développement logiciel (SDK) Databricks pour Python 0.19.0 et ultérieur. Mettez à jour la version installée de votre projet de code du Kit de développement logiciel (SDK) Databricks pour Python vers la version 0.19.0 ou ultérieure pour utiliser l’authentification U2M OAuth. Consultez Prise en main du Kit de développement logiciel (SDK) Databricks pour Python.
Pour l’authentification U2M OAuth, vous devez utiliser l’interface CLI Databricks pour vous authentifier avant d’exécuter votre code Python. Consultez le Tutoriel.
Authentification machine à machine (M2M) OAuth L’authentification machine à machine (M2M) OAuth est prise en charge sur le Kit de développement logiciel (SDK) Databricks pour Python 0.18.0 et ultérieur. Mettez à jour la version installée de votre projet de code du Kit de développement logiciel (SDK) Databricks pour Python vers la version 0.18.0 ou ultérieure pour utiliser l’authentification OAuth M2M. Consultez Prise en main du Kit de développement logiciel (SDK) Databricks pour Python.
Le SDK Databricks pour Python n’a pas encore implémenté l’authentification avec des identités managées Azure.
Configurer une connexion à un cluster
Il existe plusieurs façons de configurer la connexion à votre cluster. Databricks Connect recherche les propriétés de configuration dans l’ordre suivant et utilise la première configuration trouvée. Pour obtenir des informations sur la configuration avancée, consultez Utilisation avancée de Databricks Connect pour Python.
- La méthode remote() de la classe DatabricksSession.
- Un profil de configuration Databricks
- La variable d’environnement DATABRICKS_CONFIG_PROFILE
- Une variable d’environnement pour chaque propriété de connexion
- Un profil de configuration Azure Databricks nommé DÉFAUT
La méthode remote()
de la classe DatabricksSession
Pour cette option, qui s’applique uniquement à l’authentification par jetons d’accès personnels Azure Databricks, spécifiez le nom d’instance de l’espace de travail, le jeton d’accès personnel Azure Databricks et l’ID du cluster.
Vous pouvez initialiser la DatabricksSession
classe de plusieurs façons :
- Définissez les champs et
host
,token
etcluster_id
dansDatabricksSession.builder.remote()
. - Utilisez la classe
Config
du Kit de développement logiciel (SDK) de Databricks. - Spécifiez un profil de configuration Databricks avec le champ
cluster_id
.
Au lieu de spécifier ces propriétés de connexion dans votre code, Databricks recommande de configurer les propriétés via des variables d’environnement ou des fichiers de configuration, comme décrit dans cette section. Les exemples de code suivants considèrent que vous fournissez une implémentation des fonctions retrieve_*
proposées pour obtenir les propriétés nécessaires auprès de l’utilisateur ou d’un autre magasin de configuration, comme Azure KeyVault.
Le code de chacune de ces approches est le suivant :
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 profil de configuration Databricks
Pour cette option, créez ou identifiez un profil de configuration Azure Databricks contenant le champ cluster_id
et tout autre champ nécessaire pour le type d’authentification Databricks que vous souhaitez utiliser.
Les champs de profil de configuration requis pour chaque type d'authentification sont les suivants :
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
host
ettoken
. - Pour l’Authentification machine à machine (M2M) OAuth (là où elle est prise en charge) :
host
,client_id
etclient_secret
. - Pour l’authentification utilisateur à machine (U2M) OAuth (lorsqu’elle est prise en charge) :
host
. - Pour l’authentification avec un principal de service Microsoft Entra ID (anciennement Azure Active Directory) :
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
et éventuellementazure_workspace_resource_id
. - Pour l'authentification Azure CLI:
host
. - Pour l’authentification des identités managées Azure (si prise en charge) :
host
,azure_use_msi
,azure_client_id
et éventuellementazure_workspace_resource_id
.
Définissez ensuite le nom de ce profil de configuration via la classe de configuration.
Vous pouvez spécifier cluster_id
plusieurs façons :
- Incluez le champ
cluster_id
dans votre profil de configuration, puis spécifiez simplement le nom du profil de configuration. - Spécifiez le nom du profil de configuration avec le champ
cluster_id
.
Si vous avez déjà défini la variable d’environnement DATABRICKS_CLUSTER_ID
avec l’ID du cluster, vous n’avez pas besoin de spécifier cluster_id
.
Le code de chacune de ces approches est le suivant :
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 d’environnement DATABRICKS_CONFIG_PROFILE
Pour cette option, créez ou identifiez un profil de configuration Azure Databricks contenant le champ cluster_id
et tout autre champ nécessaire pour le type d’authentification Databricks que vous souhaitez utiliser.
Si vous avez déjà défini la variable d’environnement DATABRICKS_CLUSTER_ID
avec l’ID du cluster, vous n’avez pas besoin de spécifier cluster_id
.
Les champs de profil de configuration requis pour chaque type d'authentification sont les suivants :
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
host
ettoken
. - Pour l’Authentification machine à machine (M2M) OAuth (là où elle est prise en charge) :
host
,client_id
etclient_secret
. - Pour l’authentification utilisateur à machine (U2M) OAuth (lorsqu’elle est prise en charge) :
host
. - Pour l’authentification avec un principal de service Microsoft Entra ID (anciennement Azure Active Directory) :
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
et éventuellementazure_workspace_resource_id
. - Pour l'authentification Azure CLI:
host
. - Pour l’authentification des identités managées Azure (si prise en charge) :
host
,azure_use_msi
,azure_client_id
et éventuellementazure_workspace_resource_id
.
Attribuez à la variable d’environnement DATABRICKS_CONFIG_PROFILE
le nom de ce profil de configuration. Initialisez ensuite la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Une variable d’environnement pour chaque propriété de connexion
Pour cette option, définissez la variable d'environnement DATABRICKS_CLUSTER_ID
ainsi que les autres variables d’environnement nécessaires pour le type d’authentification Databricks que vous souhaitez utiliser.
Les variables d'environnement requises pour chaque type d'authentification sont les suivantes :
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
DATABRICKS_HOST
etDATABRICKS_TOKEN
. - Pour l’Authentification machine à machine (M2M) OAuth (là où elle est prise en charge) :
DATABRICKS_HOST
,DATABRICKS_CLIENT_ID
etDATABRICKS_CLIENT_SECRET
. - Pour l’authentification utilisateur à machine (U2M) OAuth (lorsqu’elle est prise en charge) :
DATABRICKS_HOST
. - Pour l’authentification avec un principal de service Microsoft Entra ID (anciennement Azure Active Directory) :
DATABRICKS_HOST
,ARM_TENANT_ID
,ARM_CLIENT_ID
,ARM_CLIENT_SECRET
et éventuellementDATABRICKS_AZURE_RESOURCE_ID
. - Pour l'authentification Azure CLI:
DATABRICKS_HOST
. - Pour l’authentification des identités managées Azure (si prise en charge) :
DATABRICKS_HOST
,ARM_USE_MSI
,ARM_CLIENT_ID
et éventuellementDATABRICKS_AZURE_RESOURCE_ID
.
Initialisez ensuite la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Un profil de configuration Databricks nommé DEFAULT
Pour cette option, créez ou identifiez un profil de configuration Azure Databricks contenant le champ cluster_id
et tout autre champ nécessaire pour le type d’authentification Databricks que vous souhaitez utiliser.
Si vous avez déjà défini la variable d’environnement DATABRICKS_CLUSTER_ID
avec l’ID du cluster, vous n’avez pas besoin de spécifier cluster_id
.
Les champs de profil de configuration requis pour chaque type d'authentification sont les suivants :
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
host
ettoken
. - Pour l’Authentification machine à machine (M2M) OAuth (là où elle est prise en charge) :
host
,client_id
etclient_secret
. - Pour l’authentification utilisateur à machine (U2M) OAuth (lorsqu’elle est prise en charge) :
host
. - Pour l’authentification avec un principal de service Microsoft Entra ID (anciennement Azure Active Directory) :
host
,azure_tenant_id
,azure_client_id
,azure_client_secret
et éventuellementazure_workspace_resource_id
. - Pour l'authentification Azure CLI:
host
. - Pour l’authentification des identités managées Azure (si prise en charge) :
host
,azure_use_msi
,azure_client_id
et éventuellementazure_workspace_resource_id
.
Nommez ce profil de configuration DEFAULT
.
Initialisez ensuite la DatabricksSession
classe :
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Configurer une connexion au calcul serverless
Important
Cette fonctionnalité est disponible en préversion publique.
Databricks Connect pour Python prend en charge la connexion à un calcul serverless. Pour utiliser cette fonctionnalité, les exigences de connexion à serverless doivent être satisfaites. Consultez Spécifications.
Important
Cette fonctionnalité présente les limitations suivantes :
- Cette fonctionnalité est uniquement prise en charge dans Databricks Connect pour Python.
- Toutes les limitations de Databricks Connect pour Python
- Toutes les limitations du calcul serverless
- Seules les dépendances Python incluses comme élément de l’environnement de calcul serverless peuvent être utilisées pour les UDF. Consultez les images client serverless. Il n’est pas possible d’installer de dépendances supplémentaires.
- Les UDF avec modules personnalisés ne sont pas prises en charge.
Vous pouvez configurer une connexion au calcul serverless de l’une des manières suivantes :
Définissez la variable d’environnement locale
DATABRICKS_SERVERLESS_COMPUTE_ID
surauto
. Si cette variable d’environnement est définie, Databricks Connect ignore lecluster_id
.Dans un profil de configuration Databricks local, définissez
serverless_compute_id = auto
, puis référencez ce profil à partir de votre code.[DEFAULT] host = https://my-workspace.cloud.databricks.com/ serverless_compute_id = auto token = dapi123...
Vous pouvez également utiliser l’une des options suivantes :
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()
Remarque
La session de calcul serverless expire après 10 minutes d’inactivité. Après cela, une nouvelle session Spark doit être créée à l’aide getOrCreate()
de la connexion au calcul serverless.
Valider la connexion à Databricks
Pour valider que votre environnement, vos informations d’identification par défaut et votre connexion au calcul sont correctement configurés pour Databricks Connect, exécutez la commande databricks-connect test
, qui échoue avec un code de sortie non nul et un message d’erreur correspondant lorsqu’elle détecte toute incompatibilité dans l’installation.
databricks-connect test
Dans Databricks Connect 14.3 et versions ultérieures, vous pouvez également valider votre environnement à l’aide de validateSession()
:
DatabricksSession.builder.validateSession(True).getOrCreate()
Désactivation de Databricks Connect
Les services Databricks Connect (et Spark Connect sous-jacents) peuvent être désactivés sur n’importe quel cluster donné.
Pour désactiver le service Databricks Connect, définissez la configuration Spark suivante sur le cluster.
spark.databricks.service.server.enabled false