Configuration du compute pour Databricks Connect
Cet article couvre Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.
Cette page décrit différentes manières de configurer une connexion entre Databricks Connect et votre cluster Databricks ou votre compute serverless.
Databricks Connect vous permet de connecter des IDEs populaires tels que Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, des serveurs de notebooks et d'autres applications personnalisées aux clusters Databricks. See Databricks Connect.
Configuration
Avant de commencer, vous avez besoin des éléments suivants :
- Databricks Connect est installé. Pour les exigences d'installation, consultez les exigences d'utilisation de Databricks Connect.
- Le nom d'instance de Workspace Databricks. Ceci est la valeur Hostname du serveur de votre compute. Consultez Obtenir les détails de connexion pour une ressource de compute Databricks.
- Si vous vous connectez au compute classique, l'ID de votre cluster. Vous pouvez récupérer l'ID du cluster à partir de l'URL. Voir URL et ID de la ressource de compute.
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 qu'il trouve. Pour des informations de configuration avancée, voir Utilisation avancée de Databricks Connect.
- 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 configuration.
- Un profil de configuration Databricks nommé DEFAULT
La méthode remote() de la classe DatabricksSession
Pour cette option, qui s'applique uniquement à S'authentifier avec des jetons d'accès personnel Databricks (hérité), spécifiez le nom de l'instance du Workspace, le jeton d'accès personnel Databricks et l'ID du cluster.
Vous pouvez initialiser la classe DatabricksSession de plusieurs manières :
- Définissez les champs
host,tokenetcluster_iddansDatabricksSession.builder.remote(). - Utilisez la classe
Configdu SDK 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 vous 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 supposent que vous fournissez une certaine implémentation des fonctions retrieve_* proposées pour obtenir les propriétés nécessaires de l'utilisateur ou d'une autre banque de configurations, telle que AWS Systems Manager Parameter Store.
Le code pour chacune de ces approches est le suivant :
- Python
- Scala
# 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()
// 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
- 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 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()
// 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
- Scala
# 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()
// 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 Databricks contenant le champ cluster_id et tout autre champ nécessaire au 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 Databricks :
hostettoken. - Pour l'authentification OAuth machine-à-machine (M2M) (si prise en charge) :
host,client_idetclient_secret. - Pour l'authentification OAuth utilisateur-machine (U2M) (le cas échéant) :
host.
Ensuite, définissez le nom de ce profil de configuration par le biais de la classe de configuration.
Vous pouvez utiliser l'option --configure-cluster de la commande auth login pour ajouter automatiquement le champ cluster_id à un profil de configuration nouveau ou existant. Pour plus d'informations, exécutez la commande databricks auth login -h.
Vous pouvez spécifier cluster_id de plusieurs manières :
- Incluez le champ
cluster_iddans votre profil de configuration, puis spécifiez simplement le nom du profil de configuration. - Spécifiez le nom du profil de configuration ainsi que 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 non plus besoin de spécifier cluster_id.
Le code pour chacune de ces approches est le suivant :
- Python
- Scala
# 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()
// 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
- Scala
# 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()
// 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 Databricks contenant le champ cluster_id et tout autre champ nécessaire au 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 non plus 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 Databricks :
hostettoken. - Pour l'authentification OAuth machine-à-machine (M2M) (si prise en charge) :
host,client_idetclient_secret. - Pour l'authentification OAuth utilisateur-machine (U2M) (le cas échéant) :
host.
Vous pouvez utiliser le --configure-cluster de la commande auth login pour ajouter automatiquement le champ cluster_id à un profil de configuration nouveau ou existant. Pour plus d'informations, exécutez la commande databricks auth login -h.
Définissez la variable d'environnement DATABRICKS_CONFIG_PROFILE sur le nom de ce profil de configuration. Initialisez ensuite la classe DatabricksSession :
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Une variable d'environnement pour chaque propriété de configuration
Pour cette option, définissez la variable d'environnement DATABRICKS_CLUSTER_ID et toutes les autres variables d'environnement nécessaires au 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 Databricks :
DATABRICKS_HOSTetDATABRICKS_TOKEN. - Pour l’ authentification OAuth machine à machine (M2M):
DATABRICKS_HOST,DATABRICKS_CLIENT_IDetDATABRICKS_CLIENT_SECRET. - Pour l'authentification OAuth utilisateur-à-machine (U2M):
DATABRICKS_HOST.
Ensuite, initialisez la classe DatabricksSession :
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
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 Databricks contenant le champ cluster_id et tout autre champ nécessaire au 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 non plus 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 Databricks :
hostettoken. - Pour l'authentification OAuth machine-à-machine (M2M) (si prise en charge) :
host,client_idetclient_secret. - Pour l'authentification OAuth utilisateur-machine (U2M) (le cas échéant) :
host.
Nommez ce profil de configuration DEFAULT.
Vous pouvez utiliser l’option --configure-cluster de la commande auth login pour ajouter automatiquement le champ cluster_id au profil de configuration DEFAULT. Pour plus d'information, exécutez la commande databricks auth login -h.
Ensuite, initialisez la classe DatabricksSession :
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder().getOrCreate()
Configurez une connexion au compute Serverless
Databricks Connect pour Python et Scala prennent en charge la connexion au compute Serverless. Pour utiliser cette fonctionnalité, les exigences de version pour la connexion au serverless doivent être respectées. Consultez les exigences d'utilisation de Databricks Connect.
Cette fonctionnalité présente les limitations suivantes :
- La prise en charge de Databricks Connect pour Scala pour le compute serverless est en version bêta.
- La version de Databricks Connect et la version de Python ou Scala doivent être compatibles. Consultez les versions de Databricks Connect.
- Toutes les limitations de Databricks Connect pour Python ou de Databricks Connect pour Scala.
- Toutes les limites du Serverless compute
Pour Python, vous pouvez configurer une connexion à un compute Serverless dans votre environnement local :
-
Définissez la variable d'environnement locale
DATABRICKS_SERVERLESS_COMPUTE_IDsurauto. Si cette variable d'environnement est définie, Databricks Connect ignorecluster_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...
Ou pour Python ou Scala :
- Python
- Scala
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.serverless().getOrCreate()
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.serverless().getOrCreate()
Valider la connexion à Databricks
Pour valider que votre environnement, les identifiants par default et la connexion au compute sont correctement configurés pour Databricks Connect, exécutez la commande databricks-connect test :
databricks-connect test
Cette commande échoue avec un code de sortie non nul et un message d'erreur correspondant lorsqu'elle détecte une incompatibilité dans la configuration, par exemple lorsque la version de Databricks Connect est incompatible avec la version de compute Serverless Databricks. Pour les informations de support de version de Databricks Connect, consultez versions de Databricks Connect.
Avec Databricks Connect 14.3 et versions supé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