Installer Databricks Connect pour Scala
Remarque
Cet article présente Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.
Cet article explique comment installer Databricks Connect pour Scala. Consultez Qu’est-ce que Databricks Connect ?. Pour accéder à la version Python de cet article, consultez Installer Databricks Connect pour Python.
Spécifications
- Votre cluster et votre espace de travail Azure Databricks cibles doivent répondre aux exigences de Configuration de cluster pour Databricks Connect.
- JDK (Java Development Kit) doit être installé sur votre machine de développement. Databricks recommande que la version de l’installation de JDK que vous utilisez corresponde à la version de JDK sur votre cluster Azure Databricks. Pour trouver la version du JDK de votre cluster, consultez la section « Environnement système » des notes de publication de Databricks Runtime pour votre cluster. Par exemple,
Zulu 8.70.0.23-CA-linux64
correspond à JDK 8. Consultez Notes de publication, versions et compatibilité de Databricks Runtime. - Scala doit être installé sur votre machine de développement. Databricks recommande que la version de l’installation de Scala que vous utilisez corresponde à la version de Scala sur votre cluster Azure Databricks. Pour trouver la version de Scala de votre cluster, consultez la section « Environnement système » des notes de publication de Databricks Runtime pour votre cluster. Consultez Notes de publication, versions et compatibilité de Databricks Runtime.
- Un outil de build Scala sur votre machine de développement, par exemple
sbt
.
Configurer le client
Après avoir répondu aux exigences de Databricks Connect, effectuez les étapes suivantes pour configurer le client Databricks Connect.
Étape 1 : Ajouter une référence au client Databricks Connect
Dans le fichier de build de votre projet Scala, par exemple
build.sbt
poursbt
,pom.xml
pour Maven oubuild.gradle
pour Gradle, ajoutez la référence suivante au client Databricks Connect :Sbt
libraryDependencies += "com.databricks" % "databricks-connect" % "14.0.0"
Maven
<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-connect</artifactId> <version>14.0.0</version> </dependency>
Gradle
implementation 'com.databricks.databricks-connect:14.0.0'
Remplacez
14.0.0
par la version de la bibliothèque Databricks Connect qui correspond à la version de Databricks Runtime sur votre cluster. Vous trouverez les numéros de version de la bibliothèque Databricks Connect dans le dépôt central Maven.
Étape 2 : Configurer les propriétés de connexion
Dans cette section, vous allez configurer des propriétés pour établir une connexion entre Databricks Connect et votre cluster Azure Databricks distant. Ces propriétés comprennent des paramètres permettant d’authentifier Databricks Connect avec votre cluster.
À partir de Databricks Connect pour Databricks Runtime 13.3 LTS et versions ultérieures, pour Scala, Databricks Connect inclut le kit SDK Databricks pour Java. Ce SDK implémente la norme d’authentification unifiée du client Databricks, une approche architecturale et programmatique consolidée et cohérente pour l’authentification. Cette approche permet de configurer et d’automatiser l’authentification avec Azure Databricks de façon plus centralisée et prévisible. Elle vous permet de configurer une seule fois l’authentification Azure Databricks, puis d’utiliser cette configuration sur plusieurs outils Azure Databricks et SDK sans modifier à nouveau la configuration de l’authentification.
Remarque
L’authentification utilisateur à machine OAuth (U2M) est prise en charge sur le kit de développement logiciel (SDK) Databricks pour Java 0.18.0 et versions ultérieures. Il peut être nécessaire de mettre à jour la version installée de votre projet de code du SDK Databricks pour Java vers 0.18.0 ou versions ultérieures pour utiliser l’authentification U2M OAuth. Consultez Prise en main du kit de développement logiciel (SDK) Databricks pour Java.
Pour l’authentification U2M OAuth, vous devez utiliser l’interface CLI Databricks pour vous authentifier avant d’exécuter votre code Scala. Consultez le Didacticiel.
L’authentification OAuth machine à machine (M2M) est prise en charge sur le kit de développement logiciel (SDK) Databricks pour Java 0.17.0 et versions ultérieures. Il peut être nécessaire de mettre à jour la version installée de votre projet de code du SDK Databricks pour Java vers la version 0.17.0 ou ultérieure pour utiliser l’authentification U2M OAuth. Consultez Prise en main du kit de développement logiciel (SDK) Databricks pour Java.
Le SDK Databricks pour Java n’a pas encore implémenté l’authentification avec des identités managées Azure.
Collectez les propriétés de configuration suivantes.
- Le nom de l’instance de l’espace de travail Azure Databricks. Cette valeur est identique à la valeur Nom d’hôte du serveur de votre cluster. Consultez Obtenir des détails de connexion pour une ressource de calcul Azure Databricks.
- L’ID de votre cluster. Vous pouvez obtenir l’ID du cluster à partir de l’URL. Consultez URL et ID du cluster.
- Toutes les autres propriétés nécessaires pour le type d’authentification Databricks pris en charge. Ces propriétés sont décrites tout au long de cette section.
Configurez la connexion dans votre code. Databricks Connect recherche les propriétés de configuration dans l’ordre suivant jusqu’à ce qu’il les trouve. Une fois qu’il les a trouvées, il cesse de rechercher parmi les options restantes. Les détails de chaque option apparaissent après le tableau suivant :
Options des propriétés de configuration S’applique à 1. La classe DatabricksSession
de la méthoderemote()
Authentification unique à l’aide d’un jeton d’accès personnel Azure Databricks 2. Un profil de configuration Azure Databricks Tous les types d’authentification Azure Databricks pris en charge 3. La variable d’environnement SPARK_REMOTE
Authentification unique à l’aide d’un jeton d’accès personnel Azure Databricks 4. La variable d’environnement DATABRICKS_CONFIG_PROFILE
Tous les types d’authentification Azure Databricks pris en charge 5. Une variable d’environnement pour chaque propriété de connexion Tous les types d’authentification Azure Databricks pris en charge 6. Un profil de configuration Azure Databricks nommé DEFAULT
Tous les types d’authentification Azure Databricks pris en charge La classe
DatabricksSession
de la méthoderemote()
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 classe
DatabricksSession
de plusieurs façons, comme suit :- Définissez les champs et
host
,token
etclusterId
dansDatabricksSession.builder
. - Utilisez la classe
Config
du Kit de développement logiciel (SDK) de Databricks. - Spécifiez un profil de configuration Databricks avec le champ
clusterId
.
Databricks déconseille de spécifier directement ces propriétés de connexion dans votre code. À la place, Databricks recommande de configurer les propriétés via des variables d’environnement ou des fichiers config, comme indiqué tout au long de cette section. Les exemples de code suivants considèrent que vous fournissez vous-même une implémentation des fonctions
retrieve*
proposées pour obtenir les propriétés nécessaires auprès de l’utilisateur ou d’une autre banque de configuration, comme Azure KeyVault.Le code de chacune de ces approches est le suivant :
// 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() // 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() // 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()
- Définissez les champs et
Un profil de configuration Azure 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 pris en charge, 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
DatabricksConfig
.Vous pouvez spécifier
cluster_id
de plusieurs façons, comme suit :- 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
clusterId
.
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 les champscluster_id
ouclusterId
.Le code de chacune de ces approches est le suivant :
// 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() // Specify the configuration profile name along with the clusterId field. // In this example, retrieveClusterId() assumes some custom implementation that // you provide to get the cluster ID from the user or from some other // configuration store: 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()
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
Variable d’environnement
SPARK_REMOTE
Pour cette option, qui s’applique uniquement à l’authentification par jetons d’accès personnels Azure Databricks , définissez la variable d’environnement
SPARK_REMOTE
sur la chaîne suivante, en remplaçant les espaces réservés par les valeurs appropriées.sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
Puis initialisez la classe
DatabricksSession
comme suit :import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Pour définir des variables d’environnement, consultez la documentation de votre système d’exploitation.
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 pris en charge, 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écifiercluster_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. Puis initialisez la classeDatabricksSession
comme suit :import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Pour définir des variables d’environnement, consultez la documentation de votre système d’exploitation.
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
Une variable d’environnement pour chaque propriété de connexion
Pour cette option, définissez la variable d’environnement
DATABRICKS_CLUSTER_ID
ainsi que toutes les autres variables d’environnement nécessaires pour le type d’authentification Databricks pris en charge, 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
.
Puis initialisez la classe
DatabricksSession
comme suit :import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
Pour définir des variables d’environnement, consultez la documentation de votre système d’exploitation.
- Pour l’authentification par jeton d’accès personnel Azure Databricks:
Profil de configuration Azure 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 pris en charge, 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écifiercluster_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
.Puis initialisez la classe
DatabricksSession
comme suit :scala import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
- Pour l’authentification par jeton d’accès personnel Azure Databricks: