Partager via


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 :

Programme d’installation

Avant de débuter, vous avez besoin des éléments suivants :

Remarque

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.

  1. La méthode remote() de la classe DatabricksSession.
  2. Un profil de configuration Databricks
  3. La variable d’environnement DATABRICKS_CONFIG_PROFILE
  4. Une variable d’environnement pour chaque propriété de connexion
  5. 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 et cluster_id dans DatabricksSession.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 :

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 :

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 :

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 :

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 sur auto. Si cette variable d’environnement est définie, Databricks Connect ignore le cluster_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