Delen via


Databricks SDK voor Java

In dit artikel leert u hoe u bewerkingen in Azure Databricks-accounts, werkruimten en gerelateerde resources automatiseert met de Databricks SDK voor Java. Dit artikel is een aanvulling op de Databricks SDK voor Java README, API-verwijzing en voorbeelden.

Notitie

Deze functie is in bèta en is in orde om te gebruiken in productie.

Tijdens de bètaperiode raadt Databricks u aan een afhankelijkheid vast te maken van de specifieke secundaire versie van de Databricks SDK voor Java waarvan uw code afhankelijk is. U kunt bijvoorbeeld afhankelijkheden vastmaken in bestanden zoals pom.xml voor Maven. Zie Inleiding tot het afhankelijkheidsmechanisme voor meer informatie over het vastmaken van afhankelijkheden.

Voordat u begint

Voordat u begint met het gebruik van de Databricks SDK voor Java, moet uw ontwikkelcomputer over het volgende beschikken:

  • Azure Databricks-verificatie geconfigureerd.
  • Een Java Development Kit (JDK) die compatibel is met Java 8 of hoger. Ci-tests (continue integratie) met de Databricks SDK voor Java zijn compatibel met Java-versies 8, 11, 17 en 20.
  • Een IDE (Integrated Development Environment) die compatibel is met Java, wordt aanbevolen. Databricks raadt IntelliJ IDEA aan.

Aan de slag met de Databricks SDK voor Java

  1. Geef in het bestand van pom.xml uw project aan dat uw buildsysteem afhankelijk is van de Databricks SDK voor Java. Voeg hiervoor het volgende <dependency> toe aan de bestaande <dependencies> sectie van het pom.xml bestand. Als de <dependencies> sectie nog niet bestaat in het pom.xml bestand, moet u ook het <dependencies> bovenliggende element toevoegen aan het pom.xml bestand.

    Als u bijvoorbeeld het bestand van pom.xml uw project wilt openen in IntelliJ IDEA, klikt u op Het windows-project >weergeven > en dubbelklikt u vervolgens om de src-naam>>van uw project te openen pom.xml.

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

    Notitie

    Zorg ervoor dat u vervangt door 0.0.1 de nieuwste versie van de Databricks SDK voor Java. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.

  2. Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks SDK voor Java. Klik bijvoorbeeld in IntelliJ IDEA in het projecthulpprogrammavenster met de rechtermuisknop op het hoofdknooppunt van uw project en klik vervolgens op Project opnieuw laden.

  3. Voeg code toe om de Databricks SDK voor Java te importeren en om alle clusters in uw Azure Databricks-werkruimte weer te geven. In het bestand van Main.java een project kan de code bijvoorbeeld als volgt zijn:

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

    Notitie

    Door geen argumenten in de voorgaande aanroep in te WorkspaceClient w = new WorkspaceClient()stellen, gebruikt de Databricks SDK voor Java het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .

  4. Bouw uw project. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA, klikt u in het hoofdmenu op Build Build > Project.

  5. Voer het hoofdbestand uit. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA voor het bestand van Main.java een project, klikt u in het hoofdmenu op Uitvoeren > 'Hoofd'.

  6. De lijst met clusters wordt weergegeven. In IntelliJ IDEA bevindt dit zich bijvoorbeeld in het venster Hulpprogramma uitvoeren . Als u dit taakvenster wilt weergeven, klikt u in het hoofdmenu op Weergaveprogramma > uitvoeren>.

De Databricks SDK voor Java verifiëren met uw Azure Databricks-account of -werkruimte

De Databricks SDK voor Java implementeert de geïntegreerde verificatiestandaard van de Databricks-client, een geconsolideerde en consistente architectuur en programmatische benadering voor verificatie. Deze aanpak helpt bij het instellen en automatiseren van verificatie met Azure Databricks gecentraliseerder en voorspelbaarder. Hiermee kunt u Databricks-verificatie eenmaal configureren en deze configuratie vervolgens gebruiken voor meerdere Databricks-hulpprogramma's en SDK's zonder verdere verificatieconfiguratiewijzigingen. Zie voor meer informatie, waaronder meer volledige codevoorbeelden in Java, geïntegreerde verificatie voor Databricks-clients.

Notitie

De Databricks SDK voor Java heeft nog geen verificatie van door Azure beheerde identiteiten geïmplementeerd.

Enkele van de beschikbare coderingspatronen voor het initialiseren van Databricks-verificatie met de Databricks SDK voor Java zijn:

  • Gebruik databricks-standaardverificatie door een van de volgende handelingen uit te voeren:

    • Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de DATABRICKS_CONFIG_PROFILE omgevingsvariabele in op de naam van het aangepaste configuratieprofiel.
    • Stel de vereiste omgevingsvariabelen in voor het doelverificatietype Databricks.

    Maak vervolgens als volgt een instantie van een WorkspaceClient object met databricks-standaardverificatie:

    import com.databricks.sdk.WorkspaceClient;
    // ...
    WorkspaceClient w = new WorkspaceClient();
    // ...
    
  • Het hard coderen van de vereiste velden wordt ondersteund, maar wordt niet aanbevolen, omdat het risico loopt dat gevoelige informatie in uw code wordt weergegeven, zoals persoonlijke toegangstokens van Azure Databricks. In het volgende voorbeeld worden azure Databricks-host- en toegangstokenwaarden vastgelegd voor databricks-tokenverificatie:

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

Zie ook Verificatie in de Databricks SDK voor Java README.

Databricks Utilities en Java gebruiken met de Databricks SDK voor Java

Databricks Utilities biedt verschillende helperfuncties waarmee u eenvoudig kunt werken met objectopslag, notebooks kunt koppelen en parameteriseren en werken met geheimen. Databricks biedt een Databricks Utilities voor Scala-bibliotheek , die u kunt aanroepen met Java-code, zodat u programmatisch toegang kunt krijgen tot Databricks Utilities.

Ga als volgt te werk om Java-code te gebruiken om de Databricks Utilities voor Scala aan te roepen:

  1. Declareer in uw Java-project een afhankelijkheid van de Databricks SDK voor Java, zoals beschreven in de vorige sectie.

  2. Declareer een afhankelijkheid van de Databricks Utilities voor Scala-bibliotheek. Voeg hiervoor het volgende <dependency> toe aan de bestaande <dependencies> sectie van het pom.xml bestand:

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

    Notitie

    Zorg ervoor dat u vervangt door 0.1.4 de nieuwste versie van de Databricks Utilities for Scala-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.

  3. Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks Utilities voor Scala. Klik bijvoorbeeld in IntelliJ IDEA in het projecthulpprogrammavenster op het hoofdknooppunt van uw project en klik vervolgens op Maven > Project opnieuw laden.

  4. Voeg code toe om te importeren en roep vervolgens het Databricks Utility voor Scala aan. Met de volgende code wordt bijvoorbeeld een Unity Catalog-volume geautomatiseerd. In dit voorbeeld wordt een bestand gemaakt met de naam zzz_hello.txt in het pad van het volume in de werkruimte, worden de gegevens uit het bestand gelezen en vervolgens het bestand verwijderd:

    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. Bouw uw project en voer het hoofdbestand uit.

Codevoorbeelden

In de volgende codevoorbeelden ziet u hoe u de Databricks SDK voor Java gebruikt om clusters te maken en te verwijderen, taken te maken en groepen op accountniveau weer te geven. In deze codevoorbeelden wordt gebruikgemaakt van de Databricks SDK voor het standaard azure Databricks-verificatieproces van Java.

Zie de map voorbeelden in de Databricks SDK voor Java-opslagplaats in GitHub voor aanvullende codevoorbeelden.

Een cluster maken

In dit codevoorbeeld wordt een cluster gemaakt met de opgegeven Databricks Runtime-versie en het type clusterknooppunt. Dit cluster heeft één werkrol en het cluster wordt na 15 minuten niet-actieve tijd automatisch beëindigd.

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

Een cluster maken dat gebruikmaakt van JDK 17

Notitie

JDK 8 wordt volledig ondersteund. JDK 17 bevindt zich in openbare preview voor Databricks Runtime-versies 13.1 en hoger.

Deze sectie bevat een handleiding voor het maken van een cluster met behulp van de Java Development Kit (JDK). Meer informatie over het maken van een cluster met JDK 17 voor het gebruik van Java in uw notebooks en taken.

Wanneer u een cluster maakt, geeft u op dat het cluster JDK 17 gebruikt voor zowel het stuurprogramma als het uitvoerprogramma door de volgende omgevingsvariabele toe te voegen aan Advanced Options > Spark-omgevingsvariabelen>:

JNAME=zulu17-ca-amd64

Een cluster definitief verwijderen

In dit codevoorbeeld wordt het cluster definitief verwijderd met de opgegeven cluster-id uit de werkruimte.

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

Een taak maken

In dit codevoorbeeld wordt een Azure Databricks-taak gemaakt die kan worden gebruikt om het opgegeven notebook op het opgegeven cluster uit te voeren. Terwijl deze code wordt uitgevoerd, worden het pad van het bestaande notebook, de bestaande cluster-id en de gerelateerde taakinstellingen van de gebruiker in de terminal opgehaald.

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

Bestanden beheren in Unity Catalog-volumes

In dit codevoorbeeld ziet u verschillende aanroepen naar files functionaliteit binnen WorkspaceClient om toegang te krijgen tot een Unity Catalog-volume.

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

Groepen op accountniveau weergeven

In dit codevoorbeeld worden de weergavenamen voor alle beschikbare groepen in het Azure Databricks-account weergegeven.

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

Scala gebruiken met de Databricks SDK voor Java

U kunt Scala-projecten gebruiken met de Databricks SDK voor Java. Voordat u begint, moet uw ontwikkelcomputer het volgende hebben:

  • Azure Databricks-verificatie geconfigureerd.
  • Een scala-compatibele IDE (Integrated Development Environment) wordt aanbevolen. Databricks raadt IntelliJ IDEA aan met de Scala-invoegtoepassing. Deze instructies zijn getest met IntelliJ IDEA Community Edition 2023.3.6. Als u een andere versie of editie van IntelliJ IDEA gebruikt, kunnen de volgende instructies variëren.
  • Een Java Development Kit (JDK) die compatibel is met Java 8 of hoger. Als u uw toepassingen wilt uitvoeren of uw bibliotheken wilt gebruiken in een Azure Databricks-cluster, raadt Databricks u aan een versie van JDK te gebruiken die overeenkomt met de JDK-versie in het cluster. Als u de JDK-versie wilt vinden die is opgenomen in een specifieke Databricks Runtime, raadpleegt u de releaseversies en compatibiliteit van Databricks Runtime. Als u IntelliJ IDEA gebruikt, kunt u een bestaande lokale JDK-installatie kiezen of een nieuwe JDK lokaal installeren tijdens het maken van een Scala-project.
  • Een Scala-buildhulpprogramma. Databricks raadt aan sbt. Als u IntelliJ IDEA gebruikt, kunt u de versie kiezen die u wilt gebruiken tijdens het sbt maken van een Scala-project.
  • Scala. Als u uw toepassingen wilt uitvoeren of uw bibliotheken wilt gebruiken in een Azure Databricks-cluster, raadt Databricks u aan een versie van Scala te gebruiken die overeenkomt met de Scala-versie in het cluster. Als u de Scala-versie wilt vinden die is opgenomen in een specifieke Databricks Runtime, raadpleegt u de releaseversies en compatibiliteit van Databricks Runtime. Als u IntelliJ IDEA gebruikt, kunt u de Scala-versie kiezen die u wilt gebruiken tijdens het maken van een Scala-project.

Uw Scala-project configureren, bouwen en uitvoeren:

  1. Neem in het build.sbt projectbestand een afhankelijkheid van de Databricks SDK voor Java-bibliotheek door de volgende regel toe te voegen aan het einde van het bestand en sla het bestand vervolgens op:

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

    Notitie

    Zorg ervoor dat u vervangt door 0.2.0 de nieuwste versie van de Databricks SDK voor Java-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.

  2. Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks SDK voor Java. Klik bijvoorbeeld in IntelliJ IDEA op het meldingspictogram Voor laden sbt-wijzigingen .

  3. Voeg code toe om de Databricks SDK voor Java te importeren en om alle clusters in uw Azure Databricks-werkruimte weer te geven. In het bestand van Main.scala een project kan de code bijvoorbeeld als volgt zijn:

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

    Notitie

    Door geen argumenten in de voorgaande aanroep in te val w = new WorkspaceClient()stellen, gebruikt de Databricks SDK voor Java het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .

  4. Bouw uw project. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA, klikt u in het hoofdmenu op Build Build > Project.

  5. Voer het hoofdbestand uit. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA voor het bestand van Main.scala een project, klikt u in het hoofdmenu op Uitvoeren > 'Main.scala'.

  6. De lijst met clusters wordt weergegeven. In IntelliJ IDEA bevindt dit zich bijvoorbeeld in het venster Hulpprogramma uitvoeren . Als u dit taakvenster wilt weergeven, klikt u in het hoofdmenu op Weergaveprogramma > uitvoeren>.

Databricks Utilities en Scala gebruiken met de Databricks SDK voor Java

Databricks Utilities biedt verschillende helperfuncties waarmee u eenvoudig kunt werken met objectopslag, notebooks kunt koppelen en parameteriseren en werken met geheimen. Databricks biedt een Databricks Utilities voor Scala-bibliotheek waarmee u programmatisch toegang kunt krijgen tot Databricks Utilities met Scala.

Ga als volgt te werk om de Databricks Utilities voor Scala aan te roepen:

  1. Declareer in uw Scala-project een afhankelijkheid van de Databricks SDK voor Java, zoals beschreven in de vorige sectie.

  2. Declareer een afhankelijkheid van de Databricks Utilities voor Scala-bibliotheek. Voeg bijvoorbeeld in het projectbestand build.sbt de volgende regel toe aan het einde van het bestand en sla het bestand op:

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

    Notitie

    Zorg ervoor dat u vervangt door 0.1.4 de nieuwste versie van de Databricks Utilities for Scala-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.

  3. Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks Utilities voor Scala. Klik bijvoorbeeld in IntelliJ IDEA op het meldingspictogram Voor laden sbt-wijzigingen .

  4. Voeg code toe om te importeren en roep vervolgens het Databricks Utility voor Scala aan. Met de volgende code wordt bijvoorbeeld een Unity Catalog-volume geautomatiseerd. In dit voorbeeld wordt een bestand gemaakt met de naam zzz_hello.txt in het pad van het volume in de werkruimte, worden de gegevens uit het bestand gelezen en vervolgens het bestand verwijderd:

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

    Notitie

    Door geen argumenten in de voorgaande aanroep in te val dbutils = DBUtils.getDBUtils()stellen, gebruikt Databricks Utilities voor Scala het standaardproces voor het uitvoeren van Azure Databricks-verificatie.

    Als u dit standaardgedrag wilt overschrijven, geeft u een geïnstantieerd DatabricksCfg object door als argument aan getDBUtils. Zie de voorgaande verificatiesectie voor meer informatie.

    Houd er echter rekening mee dat als uw code wordt uitgevoerd in de Databricks Runtime, dit DatabricksCfg object wordt genegeerd. Dit komt doordat de Databricks-hulpprogramma's voor Scala worden gedelegeerd aan de ingebouwde Databricks-hulpprogramma's bij het uitvoeren binnen de Databricks Runtime.

  5. Bouw uw project en voer het hoofdbestand uit.

Als u toegang wilt krijgen tot Unity Catalog-volumes, gebruikt u files binnen WorkspaceClient. Zie Bestanden beheren in Unity Catalog-volumes. U kunt geen toegang krijgen DBUtils.getDBUtils() tot volumes.

Testen

Als u uw code wilt testen, gebruikt u Java-testframeworks zoals JUnit. Als u uw code wilt testen onder gesimuleerde omstandigheden zonder Azure Databricks REST API-eindpunten aan te roepen of de status van uw Azure Databricks-accounts of -werkruimten te wijzigen, gebruikt u Java-mockingbibliotheken zoals Mockito.

Bijvoorbeeld, op basis van het volgende bestand met de naam Helpers.java van een createCluster functie die informatie retourneert over het nieuwe 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();
  }
}

En op basis van het volgende bestand met de naam Main.java waarmee de createCluster functie wordt aangeroepen:

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

Het volgende bestand met de naam HelpersTest.java test of de createCluster functie het verwachte antwoord retourneert. In plaats van een cluster te maken in de doelwerkruimte, wordt met deze test een WorkspaceClient object gesimuleerd, worden de instellingen van het gesimuleerde object gedefinieerd en wordt het gesimuleerde object vervolgens doorgegeven aan de createCluster functie. De test controleert vervolgens of de functie de verwachte id van het nieuwe gesimuleerde cluster retourneert.

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

Aanvullende bronnen

Zie voor meer informatie: