Bagikan melalui


Databricks SDK untuk Java

Dalam artikel ini, Anda mempelajari cara mengotomatiskan operasi di akun Azure Databricks, ruang kerja, dan sumber daya terkait dengan Databricks SDK untuk Java. Artikel ini melengkapi Databricks SDK untuk Java README, referensi API, dan contoh.

Catatan

Fitur ini ada di Beta dan tidak apa-apa untuk digunakan dalam produksi.

Selama periode Beta, Databricks merekomendasikan agar Anda menyematkan dependensi pada versi minor tertentu dari Databricks SDK untuk Java yang bergantung pada kode Anda. Misalnya, Anda dapat menyematkan dependensi dalam file seperti pom.xml untuk Maven. Untuk informasi selengkapnya tentang menyematkan dependensi, lihat Pengantar Mekanisme Dependensi.

Sebelum Anda mulai

Sebelum Anda mulai menggunakan Databricks SDK untuk Java, komputer pengembangan Anda harus memiliki:

  • Autentikasi Azure Databricks dikonfigurasi.
  • Java Development Kit (JDK) yang kompatibel dengan Java 8 atau yang lebih tinggi. Pengujian integrasi berkelanjutan (CI) dengan Databricks SDK for Java kompatibel dengan Java versi 8, 11, 17, dan 20.
  • Lingkungan pengembangan terintegrasi (IDE) yang kompatibel dengan Java disarankan. Databricks merekomendasikan IntelliJ IDEA.

Mulai menggunakan Databricks SDK untuk Java

  1. Dalam file proyek pom.xml Anda, instruksikan sistem build Anda untuk mengambil dependensi pada Databricks SDK untuk Java. Untuk melakukan ini, tambahkan yang berikut ini <dependency> ke pom.xml bagian file yang sudah ada <dependencies> . Jika bagian <dependencies> belum ada dalam pom.xml file, Anda juga harus menambahkan <dependencies> elemen induk ke pom.xml file.

    Misalnya, untuk membuka file proyek pom.xml Anda di IntelliJ IDEA, klik Lihat > Alat Proyek Windows>, lalu klik dua kali untuk membuka src > nama> proyek Anda pom.xml.

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

    Catatan

    Pastikan untuk mengganti 0.0.1 dengan versi terbaru Databricks SDK untuk Java. Anda dapat menemukan versi terbaru di repositori pusat Maven.

  2. Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Databricks SDK untuk Java. Misalnya, di IntelliJ IDEA, di jendela alat Proyek proyek Anda, klik kanan simpul akar proyek Anda, lalu klik Muat Ulang Proyek.

  3. Tambahkan kode untuk mengimpor Databricks SDK untuk Java dan untuk mencantumkan semua kluster di ruang kerja Azure Databricks Anda. Misalnya, dalam file proyek Main.java , kodenya mungkin sebagai berikut:

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

    Catatan

    Dengan tidak mengatur argumen apa pun dalam panggilan sebelumnya ke WorkspaceClient w = new WorkspaceClient(), Databricks SDK for Java menggunakan proses defaultnya untuk mencoba melakukan autentikasi Azure Databricks. Untuk mengambil alih perilaku default ini, lihat bagian autentikasi berikut.

  4. Bangun proyek Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA, dari menu utama, klik Bangun > Proyek Build.

  5. Jalankan file utama Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA untuk file proyek Main.java , dari menu utama, klik Jalankan > 'Main'.

  6. Daftar kluster muncul. Misalnya, di IntelliJ IDEA, ini ada di jendela Jalankan alat. Untuk menampilkan jendela alat ini, dari menu utama, klik Tampilkan > Alat Yang Dijalankan Windows>.

Mengautentikasi Databricks SDK for Java dengan akun atau ruang kerja Azure Databricks Anda

Databricks SDK for Java menerapkan standar autentikasi terpadu klien Databricks, pendekatan arsitektur dan terprogram yang terkonsolidasi dan konsisten untuk autentikasi. Pendekatan ini membantu menyiapkan dan mengotomatiskan autentikasi dengan Azure Databricks lebih terpusat dan dapat diprediksi. Ini memungkinkan Anda untuk mengonfigurasi autentikasi Databricks sekali dan kemudian menggunakan konfigurasi tersebut di beberapa alat Databricks dan SDK tanpa perubahan konfigurasi autentikasi lebih lanjut. Untuk informasi selengkapnya, termasuk contoh kode yang lebih lengkap di Java, lihat Autentikasi terpadu klien Databricks.

Catatan

Databricks SDK untuk Java belum menerapkan autentikasi identitas terkelola Azure.

Beberapa pola pengkodian yang tersedia untuk menginisialisasi autentikasi Databricks dengan Databricks SDK untuk Java meliputi:

  • Gunakan autentikasi default Databricks dengan melakukan salah satu hal berikut:

    • Buat atau identifikasi profil konfigurasi Databricks kustom dengan bidang yang diperlukan untuk jenis autentikasi Databricks target. Kemudian atur DATABRICKS_CONFIG_PROFILE variabel lingkungan ke nama profil konfigurasi kustom.
    • Atur variabel lingkungan yang diperlukan untuk jenis autentikasi Databricks target.

    Kemudian buat contoh objek dengan autentikasi WorkspaceClient default Databricks sebagai berikut:

    import com.databricks.sdk.WorkspaceClient;
    // ...
    WorkspaceClient w = new WorkspaceClient();
    // ...
    
  • Hard-coding bidang yang diperlukan didukung tetapi tidak disarankan, karena berisiko mengekspos informasi sensitif dalam kode Anda, seperti token akses pribadi Azure Databricks. Contoh host Azure Databricks kode keras berikut dan nilai token akses untuk autentikasi 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);
    // ...
    

Lihat juga Autentikasi di Databricks SDK untuk Java README.

Menggunakan Utilitas Databricks dan Java dengan Databricks SDK untuk Java

Utilitas Databricks menyediakan beberapa fungsi pembantu untuk memudahkan bekerja dengan penyimpanan objek secara efisien, menautkan dan membuat parameter notebook, dan bekerja dengan rahasia. Databricks menyediakan Utilitas Databricks untuk pustaka Scala , yang dapat Anda panggil dengan kode Java, untuk memungkinkan Anda mengakses Utilitas Databricks secara terprogram.

Untuk menggunakan kode Java untuk memanggil Utilitas Databricks untuk Scala, lakukan hal berikut:

  1. Dalam proyek Java Anda, deklarasikan dependensi pada Databricks SDK untuk Java, seperti yang dijelaskan di bagian sebelumnya.

  2. Nyatakan dependensi pada Utilitas Databricks untuk pustaka Scala. Untuk melakukan ini, tambahkan yang berikut ini <dependency> ke pom.xml bagian file yang sudah ada <dependencies> :

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

    Catatan

    Pastikan untuk mengganti 0.1.4 dengan versi terbaru Utilitas Databricks untuk pustaka Scala. Anda dapat menemukan versi terbaru di repositori pusat Maven.

  3. Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Utilitas Databricks untuk Scala. Misalnya, di IntelliJ IDEA, di jendela alat Proyek proyek Anda, klik simpul akar proyek Anda, lalu klik Maven > Reload Project.

  4. Tambahkan kode untuk diimpor lalu panggil Utilitas Databricks untuk Scala. Misalnya, kode berikut mengotomatiskan volume Katalog Unity. Contoh ini membuat file bernama zzz_hello.txt di jalur volume dalam ruang kerja, membaca data dari file, lalu menghapus file:

    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. Bangun proyek Anda dan jalankan file utama Anda.

Contoh kode

Contoh kode berikut menunjukkan cara menggunakan Databricks SDK untuk Java untuk membuat dan menghapus kluster, membuat pekerjaan, dan mencantumkan grup tingkat akun. Contoh kode ini menggunakan Databricks SDK untuk proses autentikasi Azure Databricks default Java.

Untuk contoh kode tambahan, lihat folder contoh di repositori Databricks SDK for Java di GitHub.

Membuat kluster

Contoh kode ini membuat kluster dengan versi Databricks Runtime dan jenis node kluster yang ditentukan. Kluster ini memiliki satu pekerja, dan kluster akan secara otomatis berakhir setelah 15 menit waktu diam.

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

Membuat kluster yang menggunakan JDK 17

Catatan

JDK 8 didukung penuh. JDK 17 berada di Pratinjau Umum untuk Databricks Runtime versi 13.1 ke atas.

Bagian ini menyediakan panduan untuk membuat kluster menggunakan Java Development Kit (JDK). Pelajari cara membuat kluster dengan JDK 17 untuk menggunakan Java di buku catatan dan pekerjaan Anda.

Saat Anda membuat kluster, tentukan bahwa kluster menggunakan JDK 17 untuk driver dan eksekutor dengan menambahkan variabel lingkungan berikut ke Variabel Lingkungan Spark > Opsi > Tingkat Lanjut:

JNAME=zulu17-ca-amd64

Hapus kluster secara permanen

Contoh kode ini menghapus kluster secara permanen dengan ID kluster yang ditentukan dari ruang kerja.

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

Membuat pekerjaan

Contoh kode ini membuat pekerjaan Azure Databricks yang dapat digunakan untuk menjalankan buku catatan yang ditentukan pada kluster yang ditentukan. Saat kode ini berjalan, kode ini mendapatkan jalur notebook yang ada, ID kluster yang ada, dan pengaturan pekerjaan terkait dari pengguna di 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()
    );
  }
}

Mengelola file dalam volume Katalog Unity

Contoh kode ini menunjukkan berbagai panggilan ke files fungsionalitas dalam WorkspaceClient untuk mengakses volume Katalog 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);
  }
}

Mencantumkan grup tingkat akun

Contoh kode ini mencantumkan nama tampilan untuk semua grup yang tersedia dalam akun 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());
    }
  }
}

Menggunakan Scala dengan Databricks SDK untuk Java

Anda dapat menggunakan proyek Scala dengan Databricks SDK untuk Java. Sebelum memulai, mesin pengembangan Anda harus memiliki:

  • Autentikasi Azure Databricks dikonfigurasi.
  • Lingkungan pengembangan terintegrasi (IDE) yang kompatibel dengan Scala disarankan. Databricks merekomendasikan IntelliJ IDEA dengan plugin Scala. Instruksi ini diuji dengan IntelliJ IDEA Community Edition 2023.3.6. Jika Anda menggunakan versi atau edisi IntelliJ IDEA yang berbeda, instruksi berikut mungkin bervariasi.
  • Java Development Kit (JDK) yang kompatibel dengan Java 8 atau lebih tinggi. Jika Anda ingin menjalankan aplikasi atau menggunakan pustaka anda pada kluster Azure Databricks, Databricks menyarankan agar Anda menggunakan versi JDK yang cocok dengan versi JDK pada kluster. Untuk menemukan versi JDK yang disertakan dengan Databricks Runtime tertentu, lihat Versi dan kompatibilitas catatan rilis Databricks Runtime. Jika Anda menggunakan IntelliJ IDEA, Anda dapat memilih penginstalan JDK lokal yang ada atau menginstal JDK baru secara lokal selama pembuatan proyek Scala.
  • Alat build Scala. Databricks merekomendasikan sbt. Jika Anda menggunakan IntelliJ IDEA, Anda dapat memilih versi yang sbt akan digunakan selama pembuatan proyek Scala.
  • Scala. Jika Anda ingin menjalankan aplikasi atau menggunakan pustaka anda pada kluster Azure Databricks, Databricks menyarankan agar Anda menggunakan versi Scala yang cocok dengan versi Scala pada kluster. Untuk menemukan versi Scala yang disertakan dengan Databricks Runtime tertentu, lihat Versi dan kompatibilitas catatan rilis Databricks Runtime. Jika Anda menggunakan IntelliJ IDEA, Anda dapat memilih versi Scala yang akan digunakan selama pembuatan proyek Scala.

Untuk mengonfigurasi, membangun, dan menjalankan proyek Scala Anda:

  1. Dalam file proyek build.sbt Anda, ambil dependensi pada SDK Databricks untuk pustaka Java dengan menambahkan baris berikut ke akhir file, lalu simpan file:

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

    Catatan

    Pastikan untuk mengganti 0.2.0 dengan versi terbaru SDK Databricks untuk pustaka Java. Anda dapat menemukan versi terbaru di repositori pusat Maven.

  2. Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Databricks SDK untuk Java. Misalnya, di IntelliJ IDEA, klik ikon pemberitahuan Muat perubahan sbt.

  3. Tambahkan kode untuk mengimpor Databricks SDK untuk Java dan untuk mencantumkan semua kluster di ruang kerja Azure Databricks Anda. Misalnya, dalam file proyek Main.scala , kodenya mungkin sebagai berikut:

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

    Catatan

    Dengan tidak mengatur argumen apa pun dalam panggilan sebelumnya ke val w = new WorkspaceClient(), Databricks SDK for Java menggunakan proses defaultnya untuk mencoba melakukan autentikasi Azure Databricks. Untuk mengambil alih perilaku default ini, lihat bagian autentikasi berikut.

  4. Bangun proyek Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA, dari menu utama, klik Bangun > Proyek Build.

  5. Jalankan file utama Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA untuk file proyek Main.scala , dari menu utama, klik Jalankan > 'Main.scala'.

  6. Daftar kluster muncul. Misalnya, di IntelliJ IDEA, ini ada di jendela Jalankan alat. Untuk menampilkan jendela alat ini, dari menu utama, klik Tampilkan > Alat Yang Dijalankan Windows>.

Menggunakan Utilitas Databricks dan Scala dengan Databricks SDK untuk Java

Utilitas Databricks menyediakan beberapa fungsi pembantu untuk memudahkan bekerja dengan penyimpanan objek secara efisien, menautkan dan membuat parameter notebook, dan bekerja dengan rahasia. Databricks menyediakan Utilitas Databricks untuk pustaka Scala untuk memungkinkan Anda mengakses Utilitas Databricks secara terprogram dengan Scala.

Untuk memanggil Utilitas Databricks untuk Scala, lakukan hal berikut:

  1. Dalam proyek Scala Anda, nyatakan dependensi pada Databricks SDK untuk Java, seperti yang dijelaskan di bagian sebelumnya.

  2. Nyatakan dependensi pada Utilitas Databricks untuk pustaka Scala. Misalnya, dalam file proyek build.sbt Anda, tambahkan baris berikut ke akhir file, lalu simpan file:

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

    Catatan

    Pastikan untuk mengganti 0.1.4 dengan versi terbaru Utilitas Databricks untuk pustaka Scala. Anda dapat menemukan versi terbaru di repositori pusat Maven.

  3. Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Utilitas Databricks untuk Scala. Misalnya, di IntelliJ IDEA, klik ikon pemberitahuan Muat perubahan sbt.

  4. Tambahkan kode untuk diimpor lalu panggil Utilitas Databricks untuk Scala. Misalnya, kode berikut mengotomatiskan volume Katalog Unity. Contoh ini membuat file bernama zzz_hello.txt di jalur volume dalam ruang kerja, membaca data dari file, lalu menghapus file:

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

    Catatan

    Dengan tidak mengatur argumen apa pun dalam panggilan sebelumnya ke val dbutils = DBUtils.getDBUtils(), Utilitas Databricks untuk Scala menggunakan proses defaultnya untuk mencoba melakukan autentikasi Azure Databricks.

    Untuk mengambil alih perilaku default ini, teruskan objek yang dibuat DatabricksCfg sebagai argumen ke getDBUtils. Untuk informasi selengkapnya, lihat bagian autentikasi sebelumnya.

    Namun, perhatikan bahwa jika kode Anda berjalan di dalam Databricks Runtime, objek ini DatabricksCfg diabaikan. Ini karena Utilitas Databricks untuk Scala mendelegasikan ke Utilitas Databricks bawaan saat berjalan di dalam Runtime Databricks.

  5. Bangun proyek Anda dan jalankan file utama Anda.

Untuk mengakses volume Unity Catalog, gunakan files dalam WorkspaceClient. Lihat Mengelola file dalam volume Katalog Unity. Anda tidak dapat menggunakan DBUtils.getDBUtils() untuk mengakses volume.

Pengujian

Untuk menguji kode Anda, gunakan kerangka kerja pengujian Java seperti JUnit. Untuk menguji kode Anda dalam kondisi simulasi tanpa memanggil titik akhir REST API Azure Databricks atau mengubah status akun atau ruang kerja Azure Databricks Anda, gunakan pustaka tiruan Java seperti Mockito.

Misalnya, mengingat file berikut bernama Helpers.java yang berisi createCluster fungsi yang mengembalikan informasi tentang kluster baru:

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

Dan diberikan file berikut bernama Main.java yang memanggil createCluster fungsi:

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

File berikut bernama HelpersTest.java menguji apakah createCluster fungsi mengembalikan respons yang diharapkan. Daripada membuat kluster di ruang kerja target, pengujian ini mengejek WorkspaceClient objek, mendefinisikan pengaturan objek yang ditidakan, lalu meneruskan objek yang ditidakan ke createCluster fungsi. Pengujian kemudian memeriksa apakah fungsi mengembalikan ID kluster baru yang diharapkan.

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

Sumber Daya Tambahan:

Untuk informasi selengkapnya, lihat: