Java için Databricks SDK'sı
Bu makalede Java için Databricks SDK'sı ile Azure Databricks hesaplarında, çalışma alanlarında ve ilgili kaynaklarda işlemleri otomatikleştirmeyi öğreneceksiniz. Bu makalede Java README için Databricks SDK'sı, API başvurusu ve örnekler desteklenir.
Not
Bu özellik Beta sürümündedir ve üretimde kullanılabilir.
Beta döneminde Databricks, Java için Databricks SDK'sının kodunuzun bağımlı olduğu belirli ikincil sürümüne bağımlılığı sabitlemenizi önerir. Örneğin, Maven gibi pom.xml
dosyalardaki bağımlılıkları sabitleyebilirsiniz. Bağımlılıkları sabitleme hakkında daha fazla bilgi için bkz . Bağımlılık Mekanizmasına Giriş.
Başlamadan önce
Java için Databricks SDK'sını kullanmaya başlamadan önce geliştirme makinenizde aşağıdakiler olmalıdır:
- Azure Databricks kimlik doğrulaması yapılandırıldı.
- Java 8 veya üzeri ile uyumlu bir Java Geliştirme Seti (JDK). Java için Databricks SDK'sı ile sürekli tümleştirme (CI) testi, Java'nın 8, 11, 17 ve 20 sürümleriyle uyumludur.
- Java uyumlu tümleşik geliştirme ortamı (IDE) önerilir. Databricks, IntelliJ IDEA'ı önerir.
Java için Databricks SDK'sını kullanmaya başlama
Projenizin
pom.xml
dosyasında derleme sisteminize Java için Databricks SDK'sına bağımlılık almasını isteyin. Bunu yapmak için dosyanın var olan<dependencies>
bölümüne aşağıdakileri<dependency>
pom.xml
ekleyin.<dependencies>
Bölüm dosyadapom.xml
zaten yoksa, dosyaya<dependencies>
üst öğeyipom.xml
de eklemeniz gerekir.Örneğin, projenizin
pom.xml
dosyasını IntelliJ IDEA'da açmak için, Araç Windows > Projesini Görüntüle'ye > tıklayın ve ardından çift tıklayarak projenizin-adı> src > pom.xml açın.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Not
değerini Java için Databricks SDK'sının en son sürümüyle değiştirmeyi
0.0.1
unutmayın. En son sürümü Maven merkezi deposunda bulabilirsiniz.Projenize Java için Databricks SDK'sına bildirilen bağımlılığı almasını isteyin. Örneğin, IntelliJ IDEA'da projenizin Proje araç penceresinde projenizin kök düğümüne sağ tıklayın ve ardından Projeyi Yeniden Yükle'ye tıklayın.
Java için Databricks SDK'sını içeri aktarmak ve Azure Databricks çalışma alanınızdaki tüm kümeleri listelemek için kod ekleyin. Örneğin, bir projenin
Main.java
dosyasında kod aşağıdaki gibi olabilir: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()); } } }
Not
Önceki çağrısında
WorkspaceClient w = new WorkspaceClient()
hiçbir bağımsız değişken ayarlanmadığından, Java için Databricks SDK'sı Azure Databricks kimlik doğrulamasını gerçekleştirmeye çalışmak için varsayılan işlemini kullanır. Bu varsayılan davranışı geçersiz kılmak için aşağıdaki kimlik doğrulama bölümüne bakın.Projenizi derleyin. Örneğin, IntelliJ IDEA'da bunu yapmak için ana menüden Derleme Projesi'ne >tıklayın.
Ana dosyanızı çalıştırın. Örneğin, bir projenin dosyası için IntelliJ IDEA'da
Main.java
bunu yapmak için ana menüden Çalıştır > 'Main' komutunu tıklatın.Küme listesi görüntülenir. Örneğin, IntelliJ IDEA'da bu, Çalıştır aracı penceresindedir. Bu araç penceresini görüntülemek için, ana menüden Görünüm > Aracı Windows > Çalıştırma'ya tıklayın.
Azure Databricks hesabınız veya çalışma alanınızla Java için Databricks SDK'sının kimliğini doğrulama
Java için Databricks SDK'sı, kimlik doğrulamasına yönelik birleştirilmiş ve tutarlı bir mimari ve programlı yaklaşım olan Databricks istemci birleşik kimlik doğrulama standardını uygular. Bu yaklaşım, Azure Databricks ile kimlik doğrulamasını ayarlamayı ve otomatikleştirmeyi daha merkezi ve öngörülebilir hale getirmenizi sağlar. Databricks kimlik doğrulamasını bir kez yapılandırmanıza ve daha fazla kimlik doğrulaması yapılandırması değişikliği yapmadan bu yapılandırmayı birden çok Databricks aracında ve SDK'da kullanmanıza olanak tanır. Java'da daha eksiksiz kod örnekleri de dahil olmak üzere daha fazla bilgi için bkz . Databricks istemcisi birleşik kimlik doğrulaması.
Not
Java için Databricks SDK'sı henüz Azure tarafından yönetilen kimlik doğrulaması gerçekleştirmemiştir.
Java için Databricks SDK'sı ile Databricks kimlik doğrulamasını başlatmak için kullanılabilir kodlama desenlerinden bazıları şunlardır:
Aşağıdakilerden birini yaparak Databricks varsayılan kimlik doğrulamasını kullanın:
- Hedef Databricks kimlik doğrulama türü için gerekli alanlarla özel bir Databricks yapılandırma profili oluşturun veya tanımlayın. Ardından ortam değişkenini
DATABRICKS_CONFIG_PROFILE
özel yapılandırma profilinin adına ayarlayın. - Hedef Databricks kimlik doğrulama türü için gerekli ortam değişkenlerini ayarlayın.
Ardından databricks varsayılan kimlik doğrulamasıyla bir nesne örneği
WorkspaceClient
oluşturun:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Hedef Databricks kimlik doğrulama türü için gerekli alanlarla özel bir Databricks yapılandırma profili oluşturun veya tanımlayın. Ardından ortam değişkenini
Azure Databricks kişisel erişim belirteçleri gibi hassas bilgilerin kodunuzda açığa çıkmasına neden olduğundan, gerekli alanların sabit kodlanması desteklenir ancak önerilmez. Aşağıdaki örnek Databricks belirteci kimlik doğrulaması için Azure Databricks konağı ve erişim belirteci değerlerini sabit kodlar:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Ayrıca bkz. Java README için Databricks SDK'sında kimlik doğrulaması .
Java için Databricks SDK'sı ile Databricks Yardımcı Programları ve Java kullanma
Databricks Yardımcı Programları , nesne depolamayla verimli bir şekilde çalışmayı, not defterlerini zincirleme ve parametreleştirmeyi ve gizli dizilerle çalışmayı kolaylaştırmak için çeşitli yardımcı işlevler sağlar. Databricks, Program aracılığıyla Databricks Yardımcı Programları'na erişmenizi sağlamak üzere Java koduyla çağırabileceğiniz Scala kitaplığı için Databricks Yardımcı Programları sağlar.
Scala için Databricks Yardımcı Programlarını çağırmak üzere Java kodunu kullanmak için aşağıdakileri yapın:
Java projenizde, önceki bölümde açıklandığı gibi Java için Databricks SDK'sında bir bağımlılık bildirin.
Scala kitaplığı için Databricks Yardımcı Programları'na bağımlılık bildirin. Bunu yapmak için dosyanın var olan
<dependencies>
bölümüne aşağıdakileri<dependency>
pom.xml
ekleyin:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Not
öğesini Scala kitaplığı için Databricks Yardımcı Programları'nın en son sürümüyle değiştirmeyi
0.1.4
unutmayın. En son sürümü Maven merkezi deposunda bulabilirsiniz.Projenize Scala için Databricks Yardımcı Programları'na bildirilen bağımlılığı almasını sağlayın. Örneğin, IntelliJ IDEA'da projenizin Proje araç penceresinde projenizin kök düğümüne tıklayın ve ardından Projeyi Yeniden Yükle'ye >tıklayın.
İçeri aktarmak için kod ekleyin ve scala için Databricks Yardımcı Programı'nı çağırın. Örneğin, aşağıdaki kod bir Unity Kataloğu birimini otomatikleştirir. Bu örnek, çalışma alanı içinde birimin yolunda adlı
zzz_hello.txt
bir dosya oluşturur, dosyadaki verileri okur ve ardından dosyayı siler: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); } }
Projenizi oluşturun ve ana dosyanızı çalıştırın.
Kod örnekleri
Aşağıdaki kod örneklerinde küme oluşturmak ve silmek, iş oluşturmak ve hesap düzeyinde grupları listelemek için Java için Databricks SDK'sının nasıl kullanılacağı gösterilmektedir. Bu kod örnekleri, Java'nın varsayılan Azure Databricks kimlik doğrulama işlemi için Databricks SDK'sını kullanır.
Ek kod örnekleri için GitHub'daki Java için Databricks SDK deposundaki örnekler klasörüne bakın.
- Küme oluşturma
- Kümeyi kalıcı olarak silme
- İş oluşturma
- Unity Kataloğu birimlerindeki dosyaları yönetme
- Hesap düzeyinde grupları listeleme
Küme oluşturma
Bu kod örneği, belirtilen Databricks Runtime sürümüne ve küme düğümü türüne sahip bir küme oluşturur. Bu kümenin bir çalışanı vardır ve küme 15 dakikalık boşta kalma süresinden sonra otomatik olarak sonlandırılır.
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");
}
}
JDK 17 kullanan bir küme oluşturma
Not
JDK 8 tam olarak desteklenir. JDK 17, Databricks Runtime sürüm 13.1 ve üzeri için Genel Önizleme sürümündedir.
Bu bölümde Java Development Kit (JDK) kullanarak küme oluşturmaya yönelik bir kılavuz sağlanır. Not defterlerinizde ve işlerinizde Java kullanmak için JDK 17 ile küme oluşturmayı öğrenin.
Bir küme oluşturduğunuzda, Gelişmiş Seçenekler > Spark > Ortam Değişkenleri'ne aşağıdaki ortam değişkenini ekleyerek kümenin hem sürücü hem de yürütücü için JDK 17 kullandığını belirtin:
JNAME=zulu17-ca-amd64
Kümeyi kalıcı olarak silme
Bu kod örneği, belirtilen küme kimliğine sahip kümeyi çalışma alanından kalıcı olarak siler.
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);
}
}
İş oluşturma
Bu kod örneği, belirtilen not defterini belirtilen kümede çalıştırmak için kullanılabilecek bir Azure Databricks işi oluşturur. Bu kod çalışırken, terminaldeki kullanıcıdan mevcut not defterinin yolunu, mevcut küme kimliğini ve ilgili iş ayarlarını alır.
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()
);
}
}
Unity Kataloğu birimlerindeki dosyaları yönetme
Bu kod örneği, bir Unity Kataloğu birimine files
erişmek için içindeki WorkspaceClient
işlevlere yönelik çeşitli çağrıları gösterir.
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);
}
}
Hesap düzeyinde grupları listeleme
Bu kod örneği, Azure Databricks hesabındaki tüm kullanılabilir grupların görünen adlarını listeler.
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());
}
}
}
Java için Databricks SDK'sı ile Scala kullanma
Scala projelerini Java için Databricks SDK'sı ile kullanabilirsiniz. Başlamadan önce geliştirme makinenizin şunları içermesi gerekir:
- Azure Databricks kimlik doğrulaması yapılandırıldı.
- Scala uyumlu tümleşik geliştirme ortamı (IDE) önerilir. Databricks, Scala eklentisiyle IntelliJ IDEA'yi önerir. Bu yönergeler IntelliJ IDEA Community Edition 2023.3.6 ile test edilmiştir. IntelliJ IDEA'nın farklı bir sürümünü veya sürümünü kullanıyorsanız aşağıdaki yönergeler farklılık gösterebilir.
- Java 8 veya üzeri ile uyumlu bir Java Geliştirme Seti (JDK). Uygulamalarınızı çalıştırmak veya kitaplıklarınızı bir Azure Databricks kümesinde kullanmak istiyorsanız Databricks, kümedeki JDK sürümüyle eşleşen bir JDK sürümü kullanmanızı önerir. Belirli bir Databricks Runtime ile birlikte gelen JDK sürümünü bulmak için bkz . Databricks Runtime sürüm notları sürümleri ve uyumluluğu. IntelliJ IDEA kullanıyorsanız, Scala proje oluşturma sırasında mevcut bir yerel JDK yüklemesini seçebilir veya yeni bir JDK'yi yerel olarak yükleyebilirsiniz.
- Scala derleme aracı. Databricks önerir
sbt
. IntelliJ IDEA kullanıyorsanız Scala proje oluşturma sırasında kullanılacak sürümü seçebilirsinizsbt
. - Scala. Uygulamalarınızı çalıştırmak veya kitaplıklarınızı bir Azure Databricks kümesinde kullanmak istiyorsanız Databricks, kümedeki Scala sürümüyle eşleşen bir Scala sürümü kullanmanızı önerir. Belirli bir Databricks Runtime ile birlikte gelen Scala sürümünü bulmak için bkz . Databricks Runtime sürüm notları sürümleri ve uyumluluğu. IntelliJ IDEA kullanıyorsanız Scala proje oluşturma sırasında kullanılacak Scala sürümünü seçebilirsiniz.
Scala projenizi yapılandırmak, derlemek ve çalıştırmak için:
Projenizin
build.sbt
dosyasında, dosyanın sonuna aşağıdaki satırı ekleyerek Java için Databricks SDK kitaplığına bir bağımlılık alın ve dosyayı kaydedin:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Not
değerini Java kitaplığı için Databricks SDK'sının en son sürümüyle değiştirmeyi
0.2.0
unutmayın. En son sürümü Maven merkezi deposunda bulabilirsiniz.Projenize Java için Databricks SDK'sına bildirilen bağımlılığı almasını isteyin. Örneğin, IntelliJ IDEA'da Sbt değişikliklerini yükle bildirim simgesine tıklayın.
Java için Databricks SDK'sını içeri aktarmak ve Azure Databricks çalışma alanınızdaki tüm kümeleri listelemek için kod ekleyin. Örneğin, bir projenin
Main.scala
dosyasında kod aşağıdaki gibi olabilir: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) } } }
Not
Önceki çağrısında
val w = new WorkspaceClient()
hiçbir bağımsız değişken ayarlanmadığından, Java için Databricks SDK'sı Azure Databricks kimlik doğrulamasını gerçekleştirmeye çalışmak için varsayılan işlemini kullanır. Bu varsayılan davranışı geçersiz kılmak için aşağıdaki kimlik doğrulama bölümüne bakın.Projenizi derleyin. Örneğin, IntelliJ IDEA'da bunu yapmak için ana menüden Derleme Projesi'ne >tıklayın.
Ana dosyanızı çalıştırın. Örneğin, bunu bir projenin dosyası için IntelliJ IDEA'da
Main.scala
yapmak için ana menüden Çalıştır 'Main.scala' çalıştır'a > tıklayın.Küme listesi görüntülenir. Örneğin, IntelliJ IDEA'da bu, Çalıştır aracı penceresindedir. Bu araç penceresini görüntülemek için, ana menüden Görünüm > Aracı Windows > Çalıştırma'ya tıklayın.
Java için Databricks SDK'sı ile Databricks Yardımcı Programları ve Scala kullanma
Databricks Yardımcı Programları , nesne depolamayla verimli bir şekilde çalışmayı, not defterlerini zincirleme ve parametreleştirmeyi ve gizli dizilerle çalışmayı kolaylaştırmak için çeşitli yardımcı işlevler sağlar. Databricks, Scala ile Databricks Yardımcı Programlarına program aracılığıyla erişmenizi sağlayan bir Scala için Databricks Yardımcı Programları kitaplığı sağlar.
Scala için Databricks Yardımcı Programlarını çağırmak için aşağıdakileri yapın:
Scala projenizde, önceki bölümde açıklandığı gibi Java için Databricks SDK'sında bir bağımlılık bildirin.
Scala kitaplığı için Databricks Yardımcı Programları'na bağımlılık bildirin. Örneğin, projenizin
build.sbt
dosyasında dosyanın sonuna aşağıdaki satırı ekleyin ve dosyayı kaydedin:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Not
öğesini Scala kitaplığı için Databricks Yardımcı Programları'nın en son sürümüyle değiştirmeyi
0.1.4
unutmayın. En son sürümü Maven merkezi deposunda bulabilirsiniz.Projenize Scala için Databricks Yardımcı Programları'na bildirilen bağımlılığı almasını sağlayın. Örneğin, IntelliJ IDEA'da Sbt değişikliklerini yükle bildirim simgesine tıklayın.
İçeri aktarmak için kod ekleyin ve scala için Databricks Yardımcı Programı'nı çağırın. Örneğin, aşağıdaki kod bir Unity Kataloğu birimini otomatikleştirir. Bu örnek, çalışma alanı içinde birimin yolunda adlı
zzz_hello.txt
bir dosya oluşturur, dosyadaki verileri okur ve ardından dosyayı siler: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) } }
Not
Yukarıdaki çağrısında
val dbutils = DBUtils.getDBUtils()
herhangi bir bağımsız değişken ayarlanmadığından Scala için Databricks Yardımcı Programları, Azure Databricks kimlik doğrulamasını gerçekleştirmeye çalışmak için varsayılan işlemini kullanır.Bu varsayılan davranışı geçersiz kılmak için, örneği hazırlanmış
DatabricksCfg
bir nesneyi bağımsız değişken olarak öğesinegetDBUtils
geçirin. Daha fazla bilgi için önceki kimlik doğrulaması bölümüne bakın.Ancak, kodunuz Databricks Runtime içinde çalışıyorsa bu
DatabricksCfg
nesnenin yoksayıldığını unutmayın. Bunun nedeni, Scala için Databricks Yardımcı Programları'nın Databricks Runtime içinde çalışırken yerleşik Databricks Yardımcı Programları'na temsilci atamasıdır.Projenizi oluşturun ve ana dosyanızı çalıştırın.
Unity Kataloğu birimlerine erişmek için içinde kullanın.WorkspaceClient
files
Bkz . Unity Kataloğu birimlerindeki dosyaları yönetme. Birimleri erişmek için kullanamazsınız DBUtils.getDBUtils()
.
Test Etme
Kodunuzu test etmek için JUnit gibi Java test çerçevelerini kullanın. Azure Databricks REST API uç noktalarını çağırmadan veya Azure Databricks hesaplarınızın veya çalışma alanlarınızın durumunu değiştirmeden kodunuzu sanal koşullar altında test etmek için Mockito gibi Java sahte kitaplıklarını kullanın.
Örneğin, yeni küme hakkında bilgi döndüren bir createCluster
işlev içeren adlı Helpers.java
aşağıdaki dosya göz önünde bulundurulduğunda:
// 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();
}
}
ve işlevini çağıran adlı Main.java
aşağıdaki dosya göz önünde bulundurulduğunda createCluster
:
// Main.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Main {
public static void main(String[] args) {
WorkspaceClient w = new WorkspaceClient();
// Replace <spark-version> with the target Spark version string.
// Replace <node-type-id> with the target node type string.
CreateClusterResponse c = Helpers.createCluster(
w,
new CreateCluster(),
"My Test Cluster",
"<spark-version>",
"<node-type-id>",
15L,
1L
);
System.out.println(c.getClusterId());
}
}
Adlı aşağıdaki dosya HelpersTest.java
, işlevin createCluster
beklenen yanıtı döndürip döndürmediğini sınar. Bu test, hedef çalışma alanında küme oluşturmak yerine bir WorkspaceClient
nesneyle dalga geçer, sahte nesnenin ayarlarını tanımlar ve ardından sahte nesneyi işleve createCluster
geçirir. Test daha sonra işlevin yeni sahte kümenin beklenen kimliğini döndürip döndürmediğini denetler.
// 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);
}
}
Ek kaynaklar
Daha fazla bilgi için bkz.