Sdílet prostřednictvím


Databricks SDK pro Javu

V tomto článku se naučíte automatizovat operace v účtech, pracovních prostorech a souvisejících prostředcích Azure Databricks pomocí sady Databricks SDK pro Javu. Tento článek doplňuje sadu Databricks SDK pro java README, reference k rozhraní API a příklady.

Poznámka:

Tato funkce je v beta verzi a je v pořádku používat v produkčním prostředí.

Během beta období doporučuje Databricks připnout závislost na konkrétní podverzi sady Databricks SDK pro Javu, na které váš kód závisí. Můžete například připnout závislosti v souborech, jako pom.xml je například pro Maven. Další informace o připnutí závislostí naleznete v tématu Úvod do mechanismu závislostí.

Než začnete

Než začnete používat sadu Databricks SDK pro Javu, váš vývojový počítač musí mít:

  • Nakonfigurované ověřování Azure Databricks
  • Sada Java Development Kit (JDK), která je kompatibilní s Javou 8 nebo vyšší. Testování kontinuální integrace (CI) pomocí sady Databricks SDK pro Javu je kompatibilní s verzemi Javy 8, 11, 17 a 20.
  • Doporučuje se integrované vývojové prostředí (IDE) kompatibilní s Javou. Databricks doporučuje IntelliJ IDEA.

Začínáme se sadou Databricks SDK pro Javu

  1. V souboru projektu pom.xml dejte vašemu systému sestavení pokyn, aby vzal závislost na sadě Databricks SDK pro Javu. Uděláte to tak, že do existujícího <dependencies> oddílu pom.xml souboru přidáte následující <dependency> kód. <dependencies> Pokud oddíl v souboru ještě neexistujepom.xml, musíte do pom.xml souboru přidat <dependencies> také nadřazený prvek.

    Chcete-li například otevřít soubor projektu pom.xml v IntelliJ IDEA, klepněte na příkaz Zobrazit > nástroj Windows > Project a poklikáním otevřete soubor src > název> projektu pom.xml.

    <dependencies>
      <dependency>
        <groupId>com.databricks</groupId>
        <artifactId>databricks-sdk-java</artifactId>
        <version>0.0.1</version>
      </dependency>
    </dependencies>
    

    Poznámka:

    Nezapomeňte nahradit 0.0.1 nejnovější verzí sady Databricks SDK pro Javu. Nejnovější verzi najdete v centrálním úložišti Maven.

  2. Dejte projektu pokyn, aby převzal deklarovanou závislost na sadě Databricks SDK pro Javu. Například v IntelliJ IDEA v okně nástroje Projekt projektu klikněte pravým tlačítkem myši na kořenový uzel projektu a potom klikněte na Příkaz Znovu načíst projekt.

  3. Přidejte kód pro import sady Databricks SDK pro Javu a výpis všech clusterů v pracovním prostoru Azure Databricks. Například v souboru projektu Main.java může být kód následující:

    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());
        }
      }
    }
    

    Poznámka:

    Když v předchozím volání WorkspaceClient w = new WorkspaceClient()nenastavíte žádné argumenty, použije sada Databricks SDK pro Javu výchozí proces při pokusu o ověření Azure Databricks. Pokud chcete toto výchozí chování přepsat, přečtěte si následující část ověřování .

  4. Sestavte svůj projekt. Chcete-li to například provést v IntelliJ IDEA, v hlavní nabídce klepněte na příkaz Sestavit projekt > sestavení.

  5. Spusťte hlavní soubor. Pokud to chcete například provést v IntelliJ IDEA pro soubor projektu Main.java , v hlavní nabídce klikněte na Spustit " > Main".

  6. Zobrazí se seznam clusterů. Například v IntelliJ IDEA je to v okně nástroje Spustit . Chcete-li zobrazit toto okno nástroje, v hlavní nabídce klepněte na příkaz Zobrazit > nástroj Windows > Spustit.

Ověření sady Databricks SDK pro Javu pomocí účtu nebo pracovního prostoru Azure Databricks

Sada Databricks SDK pro Javu implementuje standard sjednoceného ověřování klienta Databricks, konsolidovaný a konzistentní přístup architektury a programového přístupu k ověřování. Tento přístup pomáhá zajistit centralizovanější a předvídatelnější nastavení a automatizaci ověřování pomocí Azure Databricks. Umožňuje konfigurovat ověřování Databricks jednou a pak tuto konfiguraci používat napříč několika nástroji a sadami SDK Databricks bez dalších změn konfigurace ověřování. Další informace, včetně kompletních příkladů kódu v Javě, najdete v tématu Jednotné ověřování klienta Databricks.

Poznámka:

Sada Databricks SDK pro Javu zatím neimplementovala ověřování spravovaných identit Azure.

Mezi dostupné vzory kódování pro inicializaci ověřování Databricks pomocí sady Databricks SDK pro Javu patří:

  • Výchozí ověřování Databricks můžete použít jedním z následujících způsobů:

    • Vytvořte nebo identifikujte vlastní konfigurační profil Databricks s požadovanými poli pro cílový typ ověřování Databricks. Potom nastavte proměnnou DATABRICKS_CONFIG_PROFILE prostředí na název vlastního konfiguračního profilu.
    • Nastavte požadované proměnné prostředí pro cílový typ ověřování Databricks.

    Pak vytvořte instanci objektu WorkspaceClient s výchozím ověřováním Databricks následujícím způsobem:

    import com.databricks.sdk.WorkspaceClient;
    // ...
    WorkspaceClient w = new WorkspaceClient();
    // ...
    
  • Požadovaná pole se pevně zakódují, ale nedoporučuje se, protože riskuje zveřejnění citlivých informací v kódu, jako jsou osobní přístupové tokeny Azure Databricks. Následující příklad pevně kóduje hodnoty hostitele Azure Databricks a přístupového tokenu pro ověřování tokenů Databricks:

    import com.databricks.sdk.WorkspaceClient;
    import com.databricks.sdk.core.DatabricksConfig;
    // ...
    DatabricksConfig cfg = new DatabricksConfig()
      .setHost("https://...")
      .setToken("...");
    WorkspaceClient w = new WorkspaceClient(cfg);
    // ...
    

Viz také Ověřování v sadě Databricks SDK pro java README.

Použití nástrojů Databricks a Javy se sadou Databricks SDK pro Javu

Nástroje Databricks poskytují několik pomocných funkcí, které usnadňují efektivní práci s úložištěm objektů, řetězení a parametrizaci poznámkových bloků a práci s tajnými kódy. Databricks poskytuje nástroje Databricks pro knihovnu Scala , kterou můžete volat pomocí kódu Java, abyste mohli programově přistupovat k nástrojům Databricks.

Pokud chcete kód Java použít k volání nástrojů Databricks pro Scala, postupujte takto:

  1. V projektu Java deklarujte závislost na sadě Databricks SDK pro Javu, jak je popsáno v předchozí části.

  2. Deklarujte závislost na nástrojích Databricks pro knihovnu Scala. Uděláte to tak, že do existujícího <dependencies> oddílu pom.xml souboru přidáte následující <dependency> položky:

    <dependency>
      <groupId>com.databricks</groupId>
      <artifactId>databricks-dbutils-scala_2.12</artifactId>
      <version>0.1.4</version>
    </dependency>
    

    Poznámka:

    Nezapomeňte nahradit 0.1.4 nejnovější verzí knihovny Databricks Utilities for Scala. Nejnovější verzi najdete v centrálním úložišti Maven.

  3. Dejte projektu pokyn, aby převzal deklarovanou závislost na nástrojích Databricks pro Scala. Například v IntelliJ IDEA v okně nástroje Projekt projektu klikněte na kořenový uzel projektu a potom klikněte na Maven > Reload Project.

  4. Přidejte kód pro import a potom volejte Databricks Utility pro Scala. Například následující kód automatizuje svazek katalogu Unity. Tento příklad vytvoří soubor pojmenovaný zzz_hello.txt v cestě ke svazku v pracovním prostoru, načte data ze souboru a pak tento soubor odstraní:

    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);
      }
    }
    
  5. Sestavte projekt a spusťte hlavní soubor.

Příklady kódu

Následující příklady kódu ukazují, jak pomocí sady Databricks SDK pro Javu vytvářet a odstraňovat clustery, vytvářet úlohy a vypisovat skupiny na úrovni účtu. Tyto příklady kódu používají sadu Databricks SDK pro výchozí proces ověřování Azure Databricks v Javě.

Další příklady kódu najdete ve složce s příklady v úložišti Databricks SDK pro Javu na GitHubu.

Vytvoření clusteru

Tento příklad kódu vytvoří cluster se zadanou verzí databricks Runtime a typem uzlu clusteru. Tento cluster má jeden pracovní proces a cluster se automaticky ukončí po 15 minutách nečinnosti.

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");
  }
}

Vytvoření clusteru, který používá sadu JDK 17

Poznámka:

Sada JDK 8 je plně podporovaná. Sada JDK 17 je ve verzi Public Preview pro Databricks Runtime verze 13.1 a vyšší.

Tato část obsahuje průvodce vytvořením clusteru pomocí sady Java Development Kit (JDK). Zjistěte, jak vytvořit cluster s JDK 17 pro použití Javy v poznámkových blocích a úlohách.

Při vytváření clusteru určete, že cluster používá sadu JDK 17 pro ovladač i exekutor přidáním následující proměnné prostředí do proměnných prostředí Advanced Options > Spark>:

JNAME=zulu17-ca-amd64

Trvalé odstranění clusteru

Tento příklad kódu trvale odstraní cluster se zadaným ID clusteru z pracovního prostoru.

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);
  }
}

Vytvoření úlohy

Tento příklad kódu vytvoří úlohu Azure Databricks, která se dá použít ke spuštění zadaného poznámkového bloku v zadaném clusteru. Při spuštění tohoto kódu získá cestu existujícího poznámkového bloku, id existujícího clusteru a související nastavení úlohy od uživatele v terminálu.

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()
    );
  }
}

Správa souborů ve svazcích katalogu Unity

Tento příklad kódu ukazuje různá volání files funkcí v rámci WorkspaceClient přístupu ke svazku katalogu 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);
  }
}

Výpis skupin na úrovni účtu

Tento příklad kódu uvádí zobrazované názvy všech dostupných skupin v rámci účtu 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());
    }
  }
}

Použití Scaly se sadou Databricks SDK pro Javu

Projekty Scala můžete použít se sadou Databricks SDK pro Javu. Než začnete, váš vývojový počítač musí mít:

  • Nakonfigurované ověřování Azure Databricks
  • Doporučuje se integrované vývojové prostředí (IDE) kompatibilní s Scala. Databricks doporučuje IntelliJ IDEA s modulem plug-in Scala. Tyto pokyny byly testovány v IntelliJ IDEA Community Edition 2023.3.6. Pokud používáte jinou verzi nebo edici IntelliJ IDEA, můžou se následující pokyny lišit.
  • Sada Java Development Kit (JDK), která je kompatibilní s Javou 8 nebo vyšší. Pokud chcete spouštět aplikace nebo používat knihovny v clusteru Azure Databricks, doporučuje Databricks použít verzi sady JDK, která odpovídá verzi sady JDK v clusteru. Informace o verzi sady JDK, která je součástí konkrétního modulu Databricks Runtime, najdete v poznámkách k verzi Databricks Runtime a jejich kompatibilitu. Pokud používáte IntelliJ IDEA, můžete během vytváření projektu Scala zvolit existující místní instalaci sady JDK nebo nainstalovat novou sadu JDK místně.
  • Nástroj pro sestavení Scala. Databricks doporučuje sbt. Pokud používáte IntelliJ IDEA, můžete zvolit sbt verzi, kterou chcete použít při vytváření projektu Scala.
  • Scala. Pokud chcete spouštět aplikace nebo používat knihovny v clusteru Azure Databricks, doporučuje Databricks použít verzi Scaly, která odpovídá verzi Scala v clusteru. Informace o verzi Scala, která je součástí konkrétního modulu Databricks Runtime, najdete v tématu Poznámky k verzi databricks Runtime verze a kompatibilita. Pokud používáte IntelliJ IDEA, můžete zvolit verzi Scala, kterou chcete použít při vytváření projektu Scala.

Konfigurace, sestavení a spuštění projektu Scala:

  1. V souboru projektu build.sbt vezměte závislost na knihovně Databricks SDK pro Javu přidáním následujícího řádku na konec souboru a pak soubor uložte:

    libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
    

    Poznámka:

    Nezapomeňte nahradit 0.2.0 nejnovější verzí sady Databricks SDK pro knihovnu Java. Nejnovější verzi najdete v centrálním úložišti Maven.

  2. Dejte projektu pokyn, aby převzal deklarovanou závislost na sadě Databricks SDK pro Javu. Například v IntelliJ IDEA klikněte na ikonu Načíst sbt změní oznámení.

  3. Přidejte kód pro import sady Databricks SDK pro Javu a výpis všech clusterů v pracovním prostoru Azure Databricks. Například v souboru projektu Main.scala může být kód následující:

    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)
        }
      }
    }
    

    Poznámka:

    Když v předchozím volání val w = new WorkspaceClient()nenastavíte žádné argumenty, použije sada Databricks SDK pro Javu výchozí proces při pokusu o ověření Azure Databricks. Pokud chcete toto výchozí chování přepsat, přečtěte si následující část ověřování .

  4. Sestavte svůj projekt. Chcete-li to například provést v IntelliJ IDEA, v hlavní nabídce klepněte na příkaz Sestavit projekt > sestavení.

  5. Spusťte hlavní soubor. Pokud to chcete například provést v IntelliJ IDEA pro soubor projektu Main.scala , v hlavní nabídce klikněte na Spustit spustit > Main.scala.

  6. Zobrazí se seznam clusterů. Například v IntelliJ IDEA je to v okně nástroje Spustit . Chcete-li zobrazit toto okno nástroje, v hlavní nabídce klepněte na příkaz Zobrazit > nástroj Windows > Spustit.

Použití nástrojů Databricks a Scala se sadou Databricks SDK pro Javu

Nástroje Databricks poskytují několik pomocných funkcí, které usnadňují efektivní práci s úložištěm objektů, řetězení a parametrizaci poznámkových bloků a práci s tajnými kódy. Databricks poskytuje knihovnu Databricks Utilities for Scala , která umožňuje programový přístup k nástrojům Databricks pomocí scaly.

Pokud chcete volat nástroje Databricks pro Scala, postupujte takto:

  1. V projektu Scala deklarujte závislost na sadě Databricks SDK pro Javu, jak je popsáno v předchozí části.

  2. Deklarujte závislost na nástrojích Databricks pro knihovnu Scala. Například do souboru projektu build.sbt přidejte na konec souboru následující řádek a pak soubor uložte:

    libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
    

    Poznámka:

    Nezapomeňte nahradit 0.1.4 nejnovější verzí knihovny Databricks Utilities for Scala. Nejnovější verzi najdete v centrálním úložišti Maven.

  3. Dejte projektu pokyn, aby převzal deklarovanou závislost na nástrojích Databricks pro Scala. Například v IntelliJ IDEA klikněte na ikonu Načíst sbt změní oznámení.

  4. Přidejte kód pro import a potom volejte Databricks Utility pro Scala. Například následující kód automatizuje svazek katalogu Unity. Tento příklad vytvoří soubor pojmenovaný zzz_hello.txt v cestě ke svazku v pracovním prostoru, načte data ze souboru a pak tento soubor odstraní:

    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)
      }
    }
    

    Poznámka:

    Když v předchozím volání val dbutils = DBUtils.getDBUtils()nenastavíte žádné argumenty, nástroje Databricks pro Scala používají k pokusu o ověření Azure Databricks výchozí proces.

    Chcete-li toto výchozí chování přepsat, předejte instanci DatabricksCfg objektu jako argument .getDBUtils Další informace najdete v předchozí části ověřování .

    Upozorňujeme však, že pokud je váš kód spuštěný uvnitř databricks Runtime, tento DatabricksCfg objekt se ignoruje. Důvodem je to, že nástroje Databricks pro Scala delegují na integrované nástroje Databricks při spuštění uvnitř databricks Runtime.

  5. Sestavte projekt a spusťte hlavní soubor.

Pro přístup ke svazkům katalogu Unity použijte files v souboru WorkspaceClient. Viz Správa souborů ve svazcích katalogu Unity. Nelze použít DBUtils.getDBUtils() pro přístup ke svazkům.

Testování

K otestování kódu použijte testovací architektury Java, jako je JUnit. K otestování kódu za simulovaných podmínek bez volání koncových bodů rozhraní REST API Služby Azure Databricks nebo změny stavu účtů nebo pracovních prostorů Azure Databricks použijte knihovny napodobování Java, jako je Například Mockito.

Například vzhledem k následujícímu souboru s názvem Helpers.java obsahujícím createCluster funkci, která vrací informace o novém clusteru:

// 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();
  }
}

A vzhledem k následujícímu createCluster souboru, Main.java který volá funkci:

// 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());
  }
}

Následující soubor s názvem HelpersTest.java testuje, zda createCluster funkce vrátí očekávanou odpověď. Místo vytvoření clusteru v cílovém pracovním prostoru tento test napodobí WorkspaceClient objekt, definuje nastavení napodobeného objektu a pak předá napodobený objekt funkci createCluster . Test pak zkontroluje, jestli funkce vrátí očekávané ID nového napodobeného clusteru.

// 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);
  }
}

Další materiály

Další informace naleznete v tématu: