SDK Databricks pour Java
Dans cet article, vous apprenez à automatiser les opérations dans les comptes, les espaces de travail et les ressources associées Azure Databricks avec le kit de développement logiciel (SDK) Databricks pour Java. Cet article complète le Kit de développement logiciel (SDK) Databricks pour Java README, référence d’APIet exemples.
Remarque
Cette fonctionnalité est en version bêta et peut être utilisée en production.
Pendant la période bêta, Databricks vous recommande d’épingler une dépendance à la version mineure spécifique du Kit de développement logiciel (SDK) Databricks pour Java dont dépend votre code. Par exemple, vous pouvez épingler des dépendances dans des fichiers tels que pom.xml
pour Maven. Pour plus d’informations sur l’épinglage des dépendances, consultez Présentation du mécanisme de dépendance.
Avant de commencer
Avant de commencer à utiliser le kit de développement logiciel (SDK) Databricks pour Java, assurez-vous que votre ordinateur de développement dispose des éléments suivants :
- L’authentification Azure Databricks configurée
- Un kit de développement Java (JDK) compatible avec Java 8 ou une version ultérieure. Les tests d’intégration continue (CI) avec le kit de développement logiciel (SDK) Databricks pour Java sont compatibles avec les versions 8, 11, 17 et 20 de Java.
- Un environnement de développement intégré (Integrated Development Environment/IDE) compatible Java est recommandé. Databricks recommande IntelliJ IDEA.
Prise en main du Kit de développement logiciel (SDK) Databricks pour Java
Dans le fichier
pom.xml
de votre projet, indiquez à votre système de build de prendre une dépendance sur le kit de développement logiciel (SDK) Databricks pour Java. Pour ce faire, ajoutez ce qui suit<dependency>
à la section<dependencies>
existante du fichierpom.xml
. Si la section<dependencies>
n’existe pas déjà dans le fichierpom.xml
, vous devez également ajouter l’élément parent<dependencies>
au fichierpom.xml
.Par exemple, pour ouvrir le fichier
pom.xml
de votre projet dans IntelliJ IDEA, cliquez sur Afficher > Fenêtre Outil > Projet, puis double-cliquez pour ouvrir your-project-name> src > pom.xml.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Remarque
Veillez à remplacer
0.0.1
par la version du kit de développement logiciel (SDK) Databricks pour Java la plus récente. Vous trouverez la version la plus récente dans le référentiel central Maven.Demandez à votre projet d’utiliser la dépendance déclarée sur le kit de développement logiciel (SDK) Databricks pour Java. Par exemple, dans IntelliJ IDEA, dans la fenêtre Outil Projet de votre projet, cliquez avec le bouton droit sur le nœud racine de votre projet, puis sur Recharger le projet.
Ajoutez du code pour importer le kit de développement logiciel (SDK) Databricks pour Java et pour répertorier tous les clusters de votre espace de travail Azure Databricks. Par exemple, dans le fichier
Main.java
d’un projet, le code peut être comme suit :import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.service.compute.ClusterInfo; import com.databricks.sdk.service.compute.ListClustersRequest; public class Main { public static void main(String[] args) { WorkspaceClient w = new WorkspaceClient(); for (ClusterInfo c : w.clusters().list(new ListClustersRequest())) { System.out.println(c.getClusterName()); } } }
Remarque
En ne définissant aucun argument dans l'appel précédent à
WorkspaceClient w = new WorkspaceClient()
, le kit de développement logiciel (SDK) Databricks pour Java utilise son processus par défaut pour tenter d'effectuer l'authentification Azure Databricks. Pour remplacer ce comportement par défaut, consultez la section d’authentification suivante.Générez votre projet. Par exemple, pour effectuer cette opération dans IntelliJ IDEA, depuis le menu principal, cliquez sur Générer > Générer un projet.
Exécutez votre fichier main. Par exemple, pour effectuer cette opération dans IntelliJ IDEA pour le fichier
Main.java
d’un projet, depuis le menu principal, cliquez sur Exécuter > Exécuter « Main ».La liste des clusters s’affiche. Par exemple, dans IntelliJ IDEA, il s’agit de la fenêtre Outil Exécuter. Pour afficher cette fenêtre Outil, dans le menu principal, cliquez sur Afficher > Fenêtres Outil > Exécuter.
Authentifier le kit de développement logiciel (SDK) Databricks pour Java avec votre compte ou espace de travail Azure Databricks
Le kit de développement logiciel (SDK) Databricks pour Java implémente la norme d’authentification unifiée du client Databricks standard, une approche architecturale et programmatique, consolidée et cohérente, pour l’authentification. Cette approche permet de rendre la configuration et l’automatisation de l’authentification avec Azure Databricks plus centralisées et prévisibles. Elle vous permet de configurer une fois l’authentification Databricks, puis d’utiliser cette configuration sur plusieurs outils Databricks et kits de développement logiciel sans modifier la configuration de l’authentification. Pour plus d’informations, dont des exemples de code plus complets dans Java, consultez Authentification unifiée du client Databricks.
Remarque
Le SDK Databricks pour Java n’a pas encore implémenté l’authentification avec des identités managées Azure.
Voici quelques-uns des modèles de codage disponibles pour initialiser l’authentification Databricks avec le kit de développement logiciel (SDK) Databricks pour Java :
Utilisez l’authentification par défaut de Databricks en effectuant l’une des opérations suivantes :
- Créez ou identifiez un profil de configuration Databricks personnalisé avec les champs requis pour le type d’authentification Databricks cible. Ensuite, définissez la variable d’environnement
DATABRICKS_CONFIG_PROFILE
sur le nom du profil de configuration personnalisé. - Définissez les variables d’environnement requises pour le type d’authentification Databricks cible.
Instanciez ensuite un objet
WorkspaceClient
avec l’authentification par défaut Databricks comme suit :import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Créez ou identifiez un profil de configuration Databricks personnalisé avec les champs requis pour le type d’authentification Databricks cible. Ensuite, définissez la variable d’environnement
Le codage des champs requis effectué de manière irréversible est pris en charge, mais non recommandé, car il risque d’exposer des informations sensibles dans votre code, telles que les jetons d’accès personnels Azure Databricks. L’exemple suivant montre le codage de l’hôte Azure Databricks et des valeurs de jeton d’accès effectué de manière irréversible pour l’authentification par jeton Databricks :
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Consultez également authentification dans le Kit de développement logiciel (SDK) Databricks pour Java README.
Utiliser Databricks Utilities et Java avec le SDK Databricks pour Java
Databricks Utilities fournit plusieurs fonctions d’assistance pour faciliter l’utilisation efficace du stockage d’objets, chaîner et paramétrer des notebooks et utiliser les secrets. Databricks fournit une bibliothèque Databricks Utilities pour Scala, que vous pouvez appeler avec du code Java, pour vous permettre d’accéder par programme à Databricks Utilities.
Pour utiliser du code Java pour appeler Databricks Utilities pour Scala, procédez comme suit :
Dans votre projet Java, déclarez une dépendance sur SDK Databricks pour Java, comme décrit dans la section précédente.
Déclarez une dépendance sur la bibliothèque Databricks Utilities pour Scala. Pour ce faire, ajoutez la dépendance
<dependency>
suivante à la section<dependencies>
existante du fichierpom.xml
:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Remarque
Veillez à remplacer
0.1.4
par la dernière version de la bibliothèque Databricks Utilities pour Scala. Vous trouverez la version la plus récente dans le référentiel central Maven.Demandez à votre projet d’utiliser la dépendance déclarée sur Databricks Utilities pour Scala. Par exemple, dans IntelliJ IDEA, dans la fenêtre Outil Projet de votre projet, cliquez sur le nœud racine de votre projet, puis sur Maven > Recharger le projet.
Ajoutez du code à importer, puis appelez Databricks Utilities pour Scala. Par exemple, le code suivant automatise un volume Unity Catalog. Cet exemple crée un fichier nommé
zzz_hello.txt
dans le chemin d’accès du volume dans l’espace de travail, lit les données du fichier, puis supprime le fichier :import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.scala.dbutils.DBUtils; public class Main { public static void main(String[] args) { String filePath = "/Volumes/main/default/my-volume/zzz_hello.txt"; String fileData = "Hello, Databricks!"; DBUtils dbutils = DBUtils.getDBUtils(new DatabricksConfig().setProfile("DEFAULT")); dbutils.fs().put(filePath, fileData, true); System.out.println(dbutils.fs().head(filePath, 18)); dbutils.fs().rm(filePath, false); } }
Générez le projet et exécutez le fichier principal.
Exemples de code
Les exemples de code suivants montrent comment utiliser le kit de développement logiciel (SDK) Databricks pour Java pour créer et supprimer des clusters, créer des tâches et répertorier les groupes de niveau de comptes. Ces exemples de code utilisent le processus d’authentification Azure Databricks par défaut du kit de développement logiciel (SDK) Databricks pour Java.
Pour obtenir d’autres exemples de code, consultez le dossier Exemples du référentiel du kit de développement logiciel (SDK) Databricks pour Java sur GitHub.
- Créer un cluster
- Supprimer définitivement un cluster
- Créer un travail
- Gérer les fichiers dans les volumes de catalogue Unity
- Répertorier les groupes au niveau du compte
Créer un cluster
Cet exemple de code crée un cluster avec la version Databricks Runtime et le type de nœud de cluster spécifiés. Ce cluster possède un Worker et s’arrête automatiquement après 15 minutes de temps d’inactivité.
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Main {
public static void main(String[] args) {
WorkspaceClient w = new WorkspaceClient();
CreateClusterResponse c = w.clusters().create(
new CreateCluster()
.setClusterName("my-cluster")
.setSparkVersion("12.2.x-scala2.12")
.setNodeTypeId("Standard_DS3_v2")
.setAutoterminationMinutes(15L)
.setNumWorkers(1L)
).getResponse();
System.out.println("View the cluster at " +
w.config().getHost() +
"#setting/clusters/" +
c.getClusterId() +
"/configuration\n");
}
}
Créer un cluster qui utilise JDK 17
Remarque
JDK 8 est entièrement pris en charge. JDK 17 est en préversion publique pour Databricks Runtime versions 13.1 et ultérieures.
Cette section fournit un guide pour créer un cluster à l'aide du kit de développement Java (JDK). Découvrez comment créer un cluster avec JDK 17 pour utiliser Java dans vos notebooks et travaux.
Quand vous créez un cluster, spécifiez que le cluster utilise JDK 17 pour le pilote et l’exécuteur en ajoutant la variable d’environnement suivante à Options avancées > Spark > Variables d’environnement :
JNAME=zulu17-ca-amd64
Supprimer définitivement un cluster
Cet exemple de code supprime définitivement de l’espace de travail le cluster possédant l’ID spécifié.
import com.databricks.sdk.WorkspaceClient;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("ID of cluster to delete (for example, 1234-567890-ab123cd4):");
Scanner in = new Scanner(System.in);
String c_id = in.nextLine();
WorkspaceClient w = new WorkspaceClient();
w.clusters().permanentDelete(c_id);
}
}
Créer un travail
Cet exemple de code crée une tâche Azure Databricks qui peut être utilisée pour exécuter le notebook spécifié sur le cluster spécifié. En cours d’exécution, ce code récupère le chemin du notebook existant, l’ID du cluster existant et les paramètres de tâche associés depuis l’utilisateur sur le terminal.
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.jobs.JobTaskSettings;
import com.databricks.sdk.service.jobs.NotebookTask;
import com.databricks.sdk.service.jobs.NotebookTaskSource;
import com.databricks.sdk.service.jobs.CreateResponse;
import com.databricks.sdk.service.jobs.CreateJob;
import java.util.Scanner;
import java.util.Map;
import java.util.Collection;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
System.out.println("Some short name for the job (for example, my-job):");
Scanner in = new Scanner(System.in);
String jobName = in.nextLine();
System.out.println("Some short description for the job (for example, My job):");
String description = in.nextLine();
System.out.println("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4):");
String existingClusterId = in.nextLine();
System.out.println("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook):");
String notebookPath = in.nextLine();
System.out.println("Some key to apply to the job's tasks (for example, my-key): ");
String taskKey = in.nextLine();
System.out.println("Attempting to create the job. Please wait...");
WorkspaceClient w = new WorkspaceClient();
Map<String, String> map = Map.of("", "");
Collection<JobTaskSettings> tasks = Arrays.asList(new JobTaskSettings()
.setDescription(description)
.setExistingClusterId(existingClusterId)
.setNotebookTask(new NotebookTask()
.setBaseParameters(map)
.setNotebookPath(notebookPath)
.setSource(NotebookTaskSource.WORKSPACE))
.setTaskKey(taskKey)
);
CreateResponse j = w.jobs().create(new CreateJob()
.setName(jobName)
.setTasks(tasks)
);
System.out.println("View the job at " +
w.config().getHost() +
"/#job/" +
j.getJobId()
);
}
}
Gérer les fichiers dans les volumes de catalogue Unity
Cet exemple de code illustre différents appels aux files
fonctionnalités au sein WorkspaceClient
pour accéder à un volume de catalogue Unity.
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.files.DirectoryEntry;
import com.databricks.sdk.service.files.DownloadResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
String catalog = "main";
String schema = "default";
String volume = "my-volume";
String volumePath = "/Volumes/" + catalog + "/" + schema + "/" + volume; // /Volumes/main/default/my-volume
String volumeFolder = "my-folder";
String volumeFolderPath = volumePath + "/" + volumeFolder; // /Volumes/main/default/my-volume/my-folder
String volumeFile = "data.csv";
String volumeFilePath = volumeFolderPath + "/" + volumeFile; // /Volumes/main/default/my-volume/my-folder/data.csv
String uploadFilePath = "./data.csv";
WorkspaceClient w = new WorkspaceClient();
// Create an empty folder in a volume.
w.files().createDirectory(volumeFolderPath);
// Upload a file to a volume.
try {
File uploadFile = new File(upload_file_path);
InputStream uploadInputStream = Files.newInputStream(Paths.get(upload_file_path));
w.files().upload(volumeFilePath, uploadInputStream);
} catch (java.io.IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}
// List the contents of a volume.
Iterable<DirectoryEntry> volumeItems = w.files().listDirectoryContents(volumePath);
for (DirectoryEntry volumeItem: volumeItems) {
System.out.println(volumeItem.getPath());
}
// List the contents of a folder in a volume.
Iterable<DirectoryEntry> volumeFolderItems = w.files().listDirectoryContents(volumeFolderPath);
for (DirectoryEntry volumeFolderItem: volumeFolderItems) {
System.out.println(volumeFolderItem.getPath());
}
// Print the contents of a file in a volume.
DownloadResponse resp = w.files().download(volumeFilePath);
InputStream downloadedFile = resp.getContents();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(downloadedFile));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (java.io.IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}
// Delete a file from a volume.
w.files().delete(volumeFilePath);
// Delete a folder from a volume.
w.files().deleteDirectory(volumeFolderPath);
}
}
Répertorier les groupes au niveau du compte
Cet exemple de code répertorie les noms complets de tous les groupes disponibles dans le compte Azure Databricks.
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
import com.databricks.sdk.service.iam.Group;
import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
public class Main {
public static void main(String[] args) {
AccountClient a = new AccountClient();
for (Group g : a.groups().list((new ListAccountGroupsRequest()))) {
System.out.println(g.getDisplayName());
}
}
}
Utiliser Scala avec le kit de développement logiciel (SDK) Databricks pour Java
Vous pouvez utiliser des projets Scala avec le kit de développement logiciel (SDK) Databricks pour Java. Avant de commencer, vérifiez que votre ordinateur de développement dispose des éléments suivants :
- L’authentification Azure Databricks configurée
- Un environnement de développement intégré (Integrated Development Environment/IDE) compatible Scala est recommandé. Databricks recommande IntelliJ IDEA avec le plug-in Scala. Ces instructions ont été testées avec IntelliJ IDEA Community Edition 2023.3.6. Si vous utilisez une version ou une édition différente d’IntelliJ IDEA, les instructions suivantes peuvent varier.
- Un kit de développement Java (JDK) compatible avec Java 8 ou une version supérieure. Si vous souhaitez exécuter vos applications ou utiliser vos bibliothèques sur un cluster Azure Databricks, Databricks vous recommande d’utiliser une version du JDK qui correspond à la version du JDK sur le cluster. Pour trouver la version du JDK incluse dans un Databricks Runtime spécifique, consultez Versions des notes de publication et compatibilité Databricks Runtime. Si vous utilisez IntelliJ IDEA, vous pouvez choisir une installation du JDK locale existante ou installer un nouveau JDK localement lors de la création du projet Scala.
- Un outil de génération Scala. Databricks recommande
sbt
. Si vous utilisez IntelliJ IDEA, vous pouvez choisir d’utiliser la versionsbt
lors de la création du projet Scala. - Scala. Si vous souhaitez exécuter vos applications ou utiliser vos bibliothèques sur un cluster Azure Databricks, Databricks vous recommande d’utiliser une version de Scala qui correspond à la version de Scala sur le cluster. Pour trouver la version Scala incluse dans un Databricks Runtime spécifique, consultez Versions des notes de publication et compatibilité Databricks Runtime. Si vous utilisez IntelliJ IDEA, vous pouvez choisir la version Scala à utiliser lors de la création du projet Scala.
Pour configurer, générer et exécuter votre projet Scala :
Dans le fichier
build.sbt
de votre projet, prenez une dépendance sur la bibliothèque du kit de développement logiciel (SDK) Databricks pour Java en ajoutant la ligne suivante à la fin du fichier, puis enregistrez le fichier :libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Remarque
Veillez à remplacer
0.2.0
par la version du kit de développement logiciel (SDK) Databricks pour bibliothèque Java. Vous trouverez la version la plus récente dans le référentiel central Maven.Demandez à votre projet d’utiliser la dépendance déclarée sur le kit de développement logiciel (SDK) Databricks pour Java. Par exemple, dans IntelliJ IDEA, cliquez sur l’icône de notification Charger sbt changes.
Ajoutez du code pour importer le kit de développement logiciel (SDK) Databricks pour Java et pour répertorier tous les clusters de votre espace de travail Azure Databricks. Par exemple, dans le fichier
Main.scala
d’un projet, le code peut être comme suit :import com.databricks.sdk.WorkspaceClient import com.databricks.sdk.service.compute.ListClustersRequest object Main { def main(args: Array[String]): Unit = { val w = new WorkspaceClient() w.clusters().list(new ListClustersRequest()).forEach{ elem => println(elem.getClusterName) } } }
Remarque
En ne définissant aucun argument dans l'appel précédent à
val w = new WorkspaceClient()
, le kit de développement logiciel (SDK) Databricks pour Java utilise son processus par défaut pour tenter d'effectuer l'authentification Azure Databricks. Pour remplacer ce comportement par défaut, consultez la section d’authentification suivante.Générez votre projet. Par exemple, pour effectuer cette opération dans IntelliJ IDEA, depuis le menu principal, cliquez sur Générer > Générer un projet.
Exécutez votre fichier main. Par exemple, pour effectuer cette opération dans IntelliJ IDEA pour le fichier
Main.scala
d’un projet, depuis le menu principal, cliquez sur Exécuter > Exécuter « Main.scala ».La liste des clusters s’affiche. Par exemple, dans IntelliJ IDEA, il s’agit de la fenêtre Outil Exécuter. Pour afficher cette fenêtre Outil, dans le menu principal, cliquez sur Afficher > Fenêtres Outil > Exécuter.
Utiliser Databricks Utilities et Scala avec le SDK Databricks pour Java
Databricks Utilities fournit plusieurs fonctions d’assistance pour faciliter l’utilisation efficace du stockage d’objets, chaîner et paramétrer des notebooks et utiliser les secrets. Databricks fournit une bibliothèque Databricks Utilities pour Scala pour vous permettre d’accéder par programme à Databricks Utilities avec Scala.
Pour appeler Databricks Utilities pour Scala, procédez comme suit :
Dans votre projet Java, déclarez une dépendance sur le SDK Databricks pour Java, comme décrit dans la section précédente.
Déclarez une dépendance sur la bibliothèque Databricks Utilities pour Scala. Par exemple, dans le fichier
build.sbt
de votre projet, ajoutez la ligne suivante à la fin du fichier, puis enregistrez le fichier :libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Remarque
Veillez à remplacer
0.1.4
par la dernière version de la bibliothèque Databricks Utilities pour Scala. Vous trouverez la version la plus récente dans le référentiel central Maven.Demandez à votre projet d’utiliser la dépendance déclarée sur Databricks Utilities pour Scala. Par exemple, dans IntelliJ IDEA, cliquez sur l’icône de notification Charger sbt changes.
Ajoutez du code à importer, puis appelez Databricks Utilities pour Scala. Par exemple, le code suivant automatise un volume Unity Catalog. Cet exemple crée un fichier nommé
zzz_hello.txt
dans le chemin d’accès du volume dans l’espace de travail, lit les données du fichier, puis supprime le fichier :import com.databricks.sdk.scala.dbutils.DBUtils object Main { def main(args: Array[String]): Unit = { val filePath = "/Volumes/main/default/my-volume/zzz_hello.txt" val fileData = "Hello, Databricks!" val dbutils = DBUtils.getDBUtils() dbutils.fs.put( file = filePath, contents = fileData, overwrite = true ) println(dbutils.fs.head(filePath)) dbutils.fs.rm(filePath) } }
Remarque
En ne définissant aucun argument dans l’appel précédent à
val dbutils = DBUtils.getDBUtils()
, Databricks Utilities pour Scala utilise son processus par défaut pour tenter d’effectuer l’authentification Azure Databricks.Pour remplacer ce comportement par défaut, transmettez un objet
DatabricksCfg
instancié en tant qu’argument àgetDBUtils
. Pour plus d’informations, consultez la section précédente sur l’authentification.Toutefois, si votre code s’exécute dans Databricks Runtime, cet objet
DatabricksCfg
est ignoré. En effet, Databricks Utilities pour Scala délègue à Databricks Utilities intégré lors de l’exécution dans Databricks Runtime.Générez le projet et exécutez le fichier principal.
Pour accéder aux volumes Unity Catalog, utilisez files
dans WorkspaceClient
. Voir Gérer des fichiers dans des volumes Unity Catalog. Vous ne pouvez pas utiliser DBUtils.getDBUtils()
pour accéder aux volumes.
Test
Pour tester votre code, utilisez des infrastructures de test Java telles que JUnit. Pour tester votre code dans des conditions simulées sans appeler des points de terminaison d’API REST d’Azure Databricks ni modifier l’état de vos comptes ou espaces de travail Azure Databricks, utilisez des bibliothèques fictives Java telles que Mockito.
Par exemple, compte tenu du fichier suivant nommé Helpers.java
contenant une fonction createCluster
qui retourne des informations sur le nouveau cluster :
// Helpers.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Helpers {
static CreateClusterResponse createCluster(
WorkspaceClient w,
CreateCluster createCluster,
String clusterName,
String sparkVersion,
String nodeTypeId,
Long autoTerminationMinutes,
Long numWorkers
) {
return w.clusters().create(
createCluster
.setClusterName(clusterName)
.setSparkVersion(sparkVersion)
.setNodeTypeId(nodeTypeId)
.setAutoterminationMinutes(autoTerminationMinutes)
.setNumWorkers(numWorkers)
).getResponse();
}
}
Et compte tenu du fichier suivant nommé Main.java
qui appelle la fonction createCluster
:
// Main.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Main {
public static void main(String[] args) {
WorkspaceClient w = new WorkspaceClient();
// Replace <spark-version> with the target Spark version string.
// Replace <node-type-id> with the target node type string.
CreateClusterResponse c = Helpers.createCluster(
w,
new CreateCluster(),
"My Test Cluster",
"<spark-version>",
"<node-type-id>",
15L,
1L
);
System.out.println(c.getClusterId());
}
}
Le fichier suivant nommé HelpersTest.java
teste si la fonction createCluster
retourne la réponse attendue. Au lieu de créer un cluster dans l’espace de travail cible, ce test simule un objet WorkspaceClient
, définit les paramètres de l’objet fictif, puis transmet l’objet fictif à la fonction createCluster
. Le test vérifie ensuite si la fonction retourne l’ID attendu du nouveau cluster fictif.
// HelpersTest.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.mixin.ClustersExt;
import com.databricks.sdk.service.compute.ClusterDetails;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.support.Wait;
import com.databricks.sdk.service.compute.CreateClusterResponse;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class HelpersTest {
@Test
public void testCreateCluster() {
WorkspaceClient mockWorkspaceClient = Mockito.mock(WorkspaceClient.class);
ClustersExt mockClustersExt = Mockito.mock(ClustersExt.class);
CreateCluster mockCreateCluster = new CreateCluster();
Wait<ClusterDetails, CreateClusterResponse> mockWait = Mockito.mock(Wait.class);
CreateClusterResponse mockResponse = Mockito.mock(CreateClusterResponse.class);
Mockito.when(mockWorkspaceClient.clusters()).thenReturn(mockClustersExt);
Mockito.when(mockClustersExt.create(Mockito.any(CreateCluster.class))).thenReturn(mockWait);
Mockito.when(mockWait.getResponse()).thenReturn(mockResponse);
// Replace <spark-version> with the target Spark version string.
// Replace <node-type-id> with the target node type string.
CreateClusterResponse response = Helpers.createCluster(
mockWorkspaceClient,
mockCreateCluster,
"My Test Cluster",
"<spark-version>",
"<node-type-id>",
15L,
1L
);
assertEquals(mockResponse, response);
}
}
Ressources supplémentaires
Pour plus d'informations, consultez les pages suivantes :
- Kit de développement logiciel (SDK) Databricks pour Java README
- Kit de développement logiciel (SDK) Databricks pour Java API reference
- Exemples de code supplémentaires
- Logging
- Opérations de longue durée
- Réponses paginées