Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Databricks merekomendasikan Bundel Aset Databricks untuk membuat, mengembangkan, menyebarkan, dan menguji pekerjaan dan sumber daya Databricks lainnya sebagai kode sumber. Lihat Apa itu Bundel Aset Databricks?.
Dalam artikel ini, Anda mempelajari cara mengotomatiskan operasi Azure Databricks dan mempercepat pengembangan 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 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
Dalam file proyek
pom.xmlAnda, instruksikan sistem build Anda untuk mengaitkan dependensi dengan Databricks SDK untuk Java. Untuk melakukan ini, tambahkan<dependency>berikut ke bagianpom.xmlyang sudah ada di file<dependencies>. Jika bagian<dependencies>belum ada dalampom.xmlfile, Anda juga harus menambahkan<dependencies>elemen induk kepom.xmlfile.Misalnya, untuk membuka file proyek
pom.xmlAnda di IntelliJ IDEA, klik Lihat > Jendela Alat > Proyek, lalu klik dua kali untuk membuka 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.1dengan versi terbaru Databricks SDK untuk Java. Anda dapat menemukan versi terbaru di repositori pusat Maven.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.
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.Bangun proyek Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA, dari menu utama, klik Bangun > Proyek Build.
Jalankan file utama Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA untuk file proyek
Main.java, dari menu utama, klik Jalankan > 'Main'.Daftar kluster muncul. Misalnya, di IntelliJ IDEA, ini ada di jendela alat Jalankan. Untuk menampilkan jendela alat ini, dari menu utama, klik Tampilkan Alat > Windows > Jalankan.
Mengautentikasi Databricks SDK for Java dengan akun atau ruang kerja Azure Databricks Anda
Databricks SDK for Java menerapkan standar autentikasi terpadu 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 Databricks.
Catatan
Databricks SDK untuk Java belum menerapkan Autentikasi dengan 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 variabel lingkungan
DATABRICKS_CONFIG_PROFILEke nama profil konfigurasi kustom. - Atur variabel lingkungan yang diperlukan untuk jenis autentikasi Databricks target.
Kemudian buat contoh objek dengan autentikasi
WorkspaceClientdefault Databricks sebagai berikut:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...- Buat atau identifikasi profil konfigurasi Databricks kustom dengan bidang yang diperlukan untuk jenis autentikasi Databricks target. Kemudian atur variabel lingkungan
Hard-coding bidang yang diperlukan didukung tetapi tidak disarankan, karena berisiko mengekspos informasi sensitif dalam kode Anda, seperti token akses pribadi Azure Databricks. Contoh berikut memasukkan langsung nilai host Azure Databricks dan 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:
Dalam proyek Java Anda, deklarasikan dependensi pada Databricks SDK untuk Java, seperti yang dijelaskan di bagian sebelumnya.
Nyatakan dependensi pada Utilitas Databricks untuk pustaka Scala. Untuk melakukan ini, tambahkan berikut ini
<dependency>ke bagian yang sudah ada daripom.xmlfile<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.4dengan versi terbaru Utilitas Databricks untuk pustaka Scala. Anda dapat menemukan versi terbaru di repositori pusat Maven.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.
Tambahkan kode untuk diimpor lalu panggil Utilitas Databricks untuk Scala. Misalnya, berikut adalah kode yang mengotomatisasi volume di Katalog Unity. Contoh ini membuat file bernama
zzz_hello.txtdi 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); } }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
- Menghapus kluster secara permanen
- Membuat pekerjaan
- Mengelola file dalam volume di Unity Catalog
- Mencantumkan grup tingkat akun
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 dengan versi JDK tertentu
Anda dapat membuat kluster yang menggunakan versi tertentu dari Java Development Kit (JDK).
Catatan
- Untuk Databricks Runtime 18.0, JDK 21 umumnya tersedia dan default, dengan JDK 17 sebagai opsi fallback.
- Untuk Databricks Runtime 17.3, JDK 21 berada di Pratinjau Umum, dan JDK 17 adalah default.
- Untuk Databricks Runtime 16.0 atau lebih tinggi, JDK 17 umumnya tersedia dan default.
- Untuk Databricks Runtime versi 13.1 hingga 15.4, JDK 8 adalah default, dan JDK 17 berada di Pratinjau Umum.
Saat Anda membuat kluster, tentukan bahwa kluster menggunakan JDK 17 atau JDK 21 untuk driver dan pelaksana dengan menambahkan variabel lingkungan berikut ke Variabel Lingkungan Spark > Opsi > Lanjutan.
Untuk JDK 17:
JNAME=zulu17-ca-amd64
Untuk JDK 21:
JNAME=zulu21-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 fungsionalitas files 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 yangsbtakan 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:
Dalam file proyek
build.sbtAnda, 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.0dengan versi terbaru SDK Databricks untuk pustaka Java. Anda dapat menemukan versi terbaru di repositori pusat Maven.Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Databricks SDK untuk Java. Misalnya, di IntelliJ IDEA, klik ikon pemberitahuan Muat perubahan sbt.
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.Bangun proyek Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA, dari menu utama, klik Bangun > Proyek Build.
Jalankan file utama Anda. Misalnya, untuk melakukan ini di IntelliJ IDEA untuk file proyek
Main.scala, dari menu utama, klik Jalankan > 'Main.scala'.Daftar kluster muncul. Misalnya, di IntelliJ IDEA, ini ada di jendela alat Jalankan. Untuk menampilkan jendela alat ini, dari menu utama, klik Tampilkan Alat > Windows > Jalankan.
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:
Dalam proyek Scala Anda, nyatakan dependensi pada Databricks SDK untuk Java, seperti yang dijelaskan di bagian sebelumnya.
Nyatakan dependensi pada Utilitas Databricks untuk pustaka Scala. Misalnya, dalam file proyek
build.sbtAnda, 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.4dengan versi terbaru Utilitas Databricks untuk pustaka Scala. Anda dapat menemukan versi terbaru di repositori pusat Maven.Instruksikan proyek Anda untuk mengambil dependensi yang dideklarasikan pada Utilitas Databricks untuk Scala. Misalnya, di IntelliJ IDEA, klik ikon pemberitahuan Muat perubahan sbt.
Tambahkan kode untuk diimpor lalu panggil Utilitas Databricks untuk Scala. Misalnya, berikut adalah kode yang mengotomatisasi volume di Katalog Unity. Contoh ini membuat file bernama
zzz_hello.txtdi 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
DatabricksCfgsebagai argumen kegetDBUtils. Untuk informasi selengkapnya, lihat bagian autentikasi sebelumnya.Namun, perhatikan bahwa jika kode Anda berjalan di dalam Databricks Runtime, objek ini
DatabricksCfgdiabaikan. Ini karena Utilitas Databricks untuk Scala mendelegasikan ke Utilitas Databricks bawaan saat berjalan di dalam Runtime Databricks.Bangun proyek Anda dan jalankan file utama Anda.
Untuk mengakses Unity Catalog volume , gunakan files dalam WorkspaceClient. Lihat Mengelola file di 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 mensimulasikan objek WorkspaceClient, mendefinisikan pengaturan objek yang disimulasikan, kemudian meneruskan objek yang disimulasikan ke fungsi createCluster. Pengujian kemudian memeriksa apakah fungsi mengembalikan ID yang diharapkan dari kluster baru yang di-mock.
// 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);
}
}
Troubleshooting
Bagian ini menjelaskan solusi untuk masalah umum dengan Databricks SDK untuk Java.
Untuk melaporkan masalah atau umpan balik lainnya, buat masalah GitHub untuk Databricks SDK untuk Java.
Kesalahan: Tidak dapat mengurai respons
Jika Anda menerima kesalahan berikut saat mencoba menggunakan Databricks SDK untuk Java, hampir selalu menunjukkan masalah dengan konfigurasi autentikasi Anda.
Error: unable to parse response. This is likely a bug in the Databricks SDK for Java or the underlying REST API.
Jika Anda mengalami kesalahan ini, verifikasi hal berikut:
- Pastikan host Databricks Anda diatur dengan benar.
- Konfirmasikan bahwa metode autentikasi memiliki izin yang diperlukan untuk operasi API yang coba Anda lakukan.
- Jika Anda berada di belakang firewall perusahaan, pastikan firewall tersebut tidak memblokir atau mengalihkan lalu lintas API.
Penyebab umum kesalahan ini adalah tautan privat yang mengalihkan SDK ke halaman login, yang tidak dapat diproses oleh SDK. Ini biasanya terjadi ketika mencoba mengakses ruang kerja berkemampuan tautan privat yang dikonfigurasi tanpa akses internet publik dari jaringan yang berbeda dari titik akhir VPC milik.
Untuk detail selengkapnya, lihat:
Sumber Daya Tambahan:
Untuk informasi selengkapnya, lihat:
- Databricks SDK untuk Java README
- Referensi Databricks SDK untuk Java API
- Contoh kode tambahan
- Pembuatan Log
- Operasi jangka panjang
- Respons yang dipaginasi