Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Databricks recomienda Conjuntos de recursos de Databricks para crear, desarrollar, implementar y probar trabajos y otros recursos de Databricks como código fuente. Consulte ¿Qué son los conjuntos de recursos de Databricks?
En este artículo, aprenderá a automatizar las operaciones de Azure Databricks y a acelerar el desarrollo con el SDK de Databricks para Java. En este artículo se complementa el SDK de Databricks para Java LÉAME, referencia de APIy ejemplos.
Nota:
Esta característica está en fase beta y es posible usarla en producción.
Durante el período beta, Databricks recomienda anclar una dependencia de la versión secundaria específica del SDK de Databricks para Java de la que depende el código. Por ejemplo, puede anclar dependencias en archivos como pom.xml para Maven. Para obtener más información sobre la asignación de dependencias, consulte Introducción al mecanismo de dependencias.
Antes de empezar
Antes de empezar a usar el SDK de Databricks para Java, la máquina de desarrollo debe cumplir con lo siguiente:
- Debe tener configurada la autenticación de Azure Databricks.
- Un kit de desarrollo de Java (JDK) compatible con Java 8 o superior. Las pruebas de integración continua (CI) con el SDK de Databricks para Java son compatibles con las versiones 8, 11, 17 y 20 de Java.
- Se recomienda un entorno de desarrollo integrado (IDE) compatible con Java. Databricks recomienda IntelliJ IDEA.
Introducción al SDK de Databricks para Java
En el archivo
pom.xmlde tu proyecto, indica al sistema de compilación que establezca una dependencia del SDK de Databricks para Java. Para ello, agregue lo siguiente<dependency>a lapom.xmlsección existente<dependencies>del archivo. Si la sección<dependencies>aún no existe en el archivopom.xml, también debe agregar el elemento principal<dependencies>al archivopom.xml.Por ejemplo, para abrir el archivo del
pom.xmlproyecto en IntelliJ IDEA, haga clic en Ver > Ventana de herramientas > Proyecto, y luego haga doble clic para abrir src >> pom.xml.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>Nota:
Asegúrese de reemplazar
0.0.1por la versión más reciente del SDK de Databricks para Java. Puede encontrar la versión más reciente en el repositorio central de Maven.Indique al proyecto que tome la dependencia declarada en el SDK de Databricks para Java. Por ejemplo, en IntelliJ IDEA, en la ventana herramienta Proyecto del proyecto, haga clic con el botón derecho en el nodo raíz del proyecto y, a continuación, haga clic en Volver a cargar proyecto.
Agregue código para importar el SDK de Databricks para Java y para enumerar todos los clústeres del área de trabajo de Azure Databricks. Por ejemplo, en el archivo de
Main.javaun proyecto, el código puede ser el siguiente: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()); } } }Nota:
Al no establecer argumentos en la llamada anterior a
WorkspaceClient w = new WorkspaceClient(), el SDK de Databricks para Java utiliza su proceso predeterminado para intentar realizar la autenticación de Azure Databricks. Para invalidar este comportamiento predeterminado, consulte la siguiente sección de autenticación.Compile el proyecto. Por ejemplo, para hacer esto en IntelliJ IDEA, en el menú principal, haga clic en Compilar > Compilar proyecto.
Ejecute el archivo principal. Por ejemplo, para hacerlo en IntelliJ IDEA para el archivo
Main.javade un proyecto, en el menú principal, haga clic en Ejecutar > Ejecutar 'Main'.Aparecerá la lista de clústeres. Por ejemplo, en IntelliJ IDEA, se encuentra en la ventana de herramientas Ejecutar. Para mostrar esta ventana de herramientas, en el menú principal, haga clic en Ver > Ventanas de herramientas > Ejecutar.
Autenticación del SDK de Databricks para Java con su cuenta o área de trabajo de Azure Databricks
El SDK de Databricks para Java implementa el estándar de autenticación unificada de Databricks , un enfoque arquitectónico y programático consolidado y coherente para la autenticación. Este enfoque ayuda a configurar y automatizar la autenticación con Azure Databricks de manera más centralizada y predecible. Permite configurar la autenticación de Databricks una vez y, a continuación, usar esa configuración en varias herramientas y SDK de Databricks sin cambios adicionales en la configuración de autenticación. Para obtener más información, incluidos ejemplos de código más completos en Java, consulte Autenticación unificada de Databricks.
Nota:
El SDK de Databricks para Java aún no ha implementado La autenticación con identidades administradas de Azure.
Entre los patrones de codificación disponibles para inicializar la autenticación de Databricks con el SDK de Databricks para Java se incluyen los siguientes:
Para usar la autenticación predeterminada de Databricks, siga uno de estos procedimientos:
- Cree o identifique un perfil de configuración de Databricks personalizado con los campos necesarios para el tipo de autenticación de Databricks de destino. Luego establezca la variable de entorno
DATABRICKS_CONFIG_PROFILEcon el nombre del perfil de configuración personalizado. - Establezca las variables de entorno necesarias para el tipo de autenticación de Databricks de destino.
A continuación, cree una instancia de un objeto
WorkspaceClient, por ejemplo, con la autenticación predeterminada de Databricks como se indica a continuación:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...- Cree o identifique un perfil de configuración de Databricks personalizado con los campos necesarios para el tipo de autenticación de Databricks de destino. Luego establezca la variable de entorno
Aunque se admite la codificación rígida de los campos obligatorios, no se recomienda porque se corre el riesgo de exponer información confidencial en el código, como los tokens de acceso personal de Azure Databricks. En el ejemplo siguiente se integran como parte del código los valores de host y token de acceso de Azure Databricks para la autenticación de tokens de Databricks:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Consulte también Autenticación en el SDK de Databricks para Java LÉAME.
Uso de Databricks Utilities y Java con el SDK de Databricks para Java
Databricks Utilities proporciona varias funciones asistentes que facilitan el trabajo con el almacenamiento de objetos de forma eficaz, encadenar y parametrizar cuadernos y trabajar con secretos. Databricks proporciona la biblioteca Databricks Utilities for Scala, a la que se puede llamar con código Java, para permitirle acceder mediante programación a Databricks Utilities.
Para usar código Java para llamar a Databricks Utilities for Scala, siga estos pasos:
En el proyecto de Java, declare una dependencia en el SDK de Databricks para Java, como se describe en la sección anterior.
Declare una dependencia en la biblioteca Databricks Utilities para Scala. Para ello, agregue lo siguiente
<dependency>a lapom.xmlsección existente<dependencies>del archivo:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>Nota:
Asegúrese de reemplazar
0.1.4por la versión más reciente de la biblioteca Databricks Utilities for Scala. Puede encontrar la versión más reciente en el repositorio central de Maven.Indique al proyecto que tome la dependencia declarada en Databricks Utilities for Scala. Por ejemplo, en IntelliJ IDEA, en la ventana herramienta Project del proyecto, haga clic en el nodo raíz del proyecto y, a continuación, haga clic en Maven > Reload Project (Volver a cargar proyecto).
Agregue código para realizar la importación y, a continuación, llame a Databricks Utilities for Scala. Por ejemplo, el siguiente código automatiza un volumen de Unity Catalog. En este ejemplo se crea un archivo denominado
zzz_hello.txten la ruta de acceso del volumen dentro del área de trabajo, se leen los datos del archivo y, a continuación, se elimina el archivo: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); } }Compile su proyecto y ejecute el archivo principal.
Ejemplos de código
En los ejemplos de código siguientes se muestra cómo usar el SDK de Databricks para Java para crear y eliminar clústeres, crear trabajos y enumerar los grupos a nivel de cuenta. Estos ejemplos de código usan el SDK de Databricks para el proceso de autenticación predeterminado de Azure Databricks de Java.
Para más ejemplos de código, consulte la carpeta de ejemplos del repositorio del SDK de Databricks para Java en GitHub.
- Crear un clúster
- Eliminación permanente de un clúster
- Creación de un trabajo
- Administración de archivos en volúmenes del Unity Catalog
- Enumeración de grupos a nivel de cuenta
Crear un clúster
En este ejemplo de código se crea un clúster con la versión de Databricks Runtime y el tipo de nodo de clúster especificados. Este clúster tiene un trabajo y el clúster se finalizará automáticamente después un tiempo de inactividad de 15 minutos.
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");
}
}
Creación de un clúster con una versión específica de JDK
Puede crear un clúster que use una versión específica del Kit de desarrollo de Java (JDK).
Nota:
- Para Databricks Runtime 18.0, JDK 21 está disponible de manera general y es el valor predeterminado, con JDK 17 como opción alternativa.
- Para Databricks Runtime 17.3, JDK 21 está en versión preliminar pública y JDK 17 es el valor predeterminado.
- Para Databricks Runtime 16.0 o superior, JDK 17 está disponible de manera general y es el predeterminado.
- Para las versiones 13.1 de Databricks Runtime a 15.4, JDK 8 es el valor predeterminado y JDK 17 está en versión preliminar pública.
Al crear un clúster, especifique que el clúster usa JDK 17 o JDK 21 para el controlador y el ejecutor agregando la siguiente variable de entorno a Opciones > avanzadas variables de entorno de Spark>.
Para JDK 17:
JNAME=zulu17-ca-amd64
Para JDK 21:
JNAME=zulu21-ca-amd64
Eliminación permanente de un usuario
En este ejemplo de código, se elimina permanentemente el clúster con el identificador de clúster especificado del área de trabajo.
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);
}
}
Creación de un trabajo
En este ejemplo de código, se crea un trabajo de Azure Databricks que ejecuta el cuaderno especificado en el clúster especificado. A medida que se ejecuta este código, obtiene la ruta de acceso del cuaderno existente, el identificador de clúster existente y la configuración de trabajo relacionada del usuario en el 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()
);
}
}
Administración de archivos en volúmenes del Unity Catalog
En este ejemplo de código se muestran varias llamadas a files funcionalidad dentro de WorkspaceClient para acceder a un volumen de Unity Catalog.
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);
}
}
Enumeración de grupos a nivel de cuenta
En este ejemplo de código se enumeran los nombres para mostrar de todos los grupos disponibles en la cuenta de 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());
}
}
}
Uso de Scala con el SDK de Databricks para Java
Puede utilizar proyectos de Scala con el SDK de Databricks para Java. Antes de comenzar, la máquina de desarrollo debe tener:
- Debe tener configurada la autenticación de Azure Databricks.
- Se recomienda un entorno de desarrollo integrado (IDE) compatible con Scala. Databricks recomienda IntelliJ IDEA con el complemento Scala. Estas instrucciones se probaron con IntelliJ IDEA Community Edition 2023.3.6. Si usa otra versión o edición de IntelliJ IDEA, las instrucciones siguientes pueden variar.
- Un kit de desarrollo de Java (JDK) compatible con Java 8 o superior. Si quiere ejecutar las aplicaciones o usar las bibliotecas en un clúster de Azure Databricks, Databricks recomienda usar una versión de JDK que coincida con la versión de JDK en el clúster. Para encontrar la versión de JDK que se incluye con Databricks Runtime específico, consulte Versiones y compatibilidad de las notas de la versión de Databricks Runtime. Si usa IntelliJ IDEA, puede elegir una instalación de JDK local existente o instalar un nuevo JDK localmente durante la creación del proyecto de Scala.
- Una herramienta de compilación de Scala. Databricks recomienda
sbt. Si usa IntelliJ IDEA, puede elegir la versiónsbtque se utilizará durante la creación del proyecto de Scala. - Scala. Si quiere ejecutar las aplicaciones o usar las bibliotecas en un clúster de Azure Databricks, Databricks recomienda usar una versión de Scala que coincida con la versión de Scala en el clúster. Para encontrar la versión de Scala que se incluye con un Databricks Runtime específico, consulte Versiones y compatibilidad de las notas de la versión de Databricks Runtime. Si usa IntelliJ IDEA, puede elegir la versión de Scala que se usará durante la creación del proyecto de Scala.
Para configurar, compilar y ejecutar el proyecto de Scala:
En el archivo
build.sbtde su proyecto, establezca una dependencia a la biblioteca SDK de Databricks para Java agregando la siguiente línea al final del archivo, y guárdelo.libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"Nota:
Asegúrese de reemplazar
0.2.0con la versión más reciente del SDK de Databricks para la biblioteca de Java. Puede encontrar la versión más reciente en el repositorio central de Maven.Indique al proyecto que tome la dependencia declarada en el SDK de Databricks para Java. Por ejemplo, en IntelliJ IDEA, haga clic en el icono de notificación Cargar cambios sbt.
Agregue código para importar el SDK de Databricks para Java y para enumerar todos los clústeres del área de trabajo de Azure Databricks. Por ejemplo, en el archivo de
Main.scalaun proyecto, el código puede ser el siguiente: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) } } }Nota:
Al no establecer argumentos en la llamada anterior a
val w = new WorkspaceClient(), el SDK de Databricks para Java utiliza su proceso predeterminado para intentar realizar la autenticación de Azure Databricks. Para invalidar este comportamiento predeterminado, consulte la siguiente sección de autenticación.Compile el proyecto. Por ejemplo, para hacer esto en IntelliJ IDEA, en el menú principal, haga clic en Compilar > Compilar proyecto.
Ejecute el archivo principal. Por ejemplo, para hacerlo en IntelliJ IDEA para el archivo
Main.scalade un proyecto, en el menú principal, haga clic en Ejecutar > Ejecutar 'Main.scala'.Aparecerá la lista de clústeres. Por ejemplo, en IntelliJ IDEA, se encuentra en la ventana de herramientas Ejecutar. Para mostrar esta ventana de herramientas, en el menú principal, haga clic en Ver > Ventanas de herramientas > Ejecutar.
Uso de Databricks Utilities y Scala con el SDK de Databricks para Java
Databricks Utilities proporciona varias funciones asistentes que facilitan el trabajo con el almacenamiento de objetos de forma eficaz, encadenar y parametrizar cuadernos y trabajar con secretos. Databricks proporciona la biblioteca Databricks Utilities for Scala, que le permite acceder mediante programación a Databricks Utilities.
Para llamar a Databricks Utilities for Scala, siga estos pasos:
En el proyecto de Scala, declare una dependencia en el SDK de Databricks para Java, como se describe en la sección anterior.
Declare una dependencia en la biblioteca Databricks Utilities para Scala. Por ejemplo, en el archivo del
build.sbtproyecto, agregue la siguiente línea al final del archivo y guarde el archivo:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"Nota:
Asegúrese de reemplazar
0.1.4por la versión más reciente de la biblioteca Databricks Utilities for Scala. Puede encontrar la versión más reciente en el repositorio central de Maven.Indique al proyecto que tome la dependencia declarada en Databricks Utilities for Scala. Por ejemplo, en IntelliJ IDEA, haga clic en el icono de notificación Cargar cambios sbt.
Agregue código para realizar la importación y, a continuación, llame a Databricks Utilities for Scala. Por ejemplo, el siguiente código automatiza un volumen de Unity Catalog. En este ejemplo se crea un archivo denominado
zzz_hello.txten la ruta de acceso del volumen dentro del área de trabajo, se leen los datos del archivo y, a continuación, se elimina el archivo: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) } }Nota:
Al no establecer argumentos en la llamada anterior a
val dbutils = DBUtils.getDBUtils(), Databricks Utilities for Scala utiliza su proceso predeterminado para intentar realizar la autenticación de Azure Databricks.Para invalidar este comportamiento predeterminado, pase un objeto
DatabricksCfgdel que se ha creado una instancia como argumento paragetDBUtils. Para más información, consulte la sección sobre autenticación anterior.Sin embargo, tenga en cuenta que si el código se ejecuta dentro Databricks Runtime, este objeto
DatabricksCfgse omite. Esto se debe a que Databricks Utilities for Scala delega a las utilidades de Databricks integradas cuando se ejecutan dentro de Databricks Runtime.Compile su proyecto y ejecute el archivo principal.
Para acceder a los Volúmenes de Unity Catalog, use files en WorkspaceClient. Vea Administrar archivos en volúmenes de Unity Catalog. No se puede usar DBUtils.getDBUtils() para acceder a los volúmenes.
Prueba
Para probar el código, use marcos de prueba de Java como JUnit. Para probar el código en condiciones simuladas sin llamar a puntos de conexión de la API de REST de Azure Databricks ni cambiar el estado de las cuentas o áreas de trabajo de Azure Databricks, use bibliotecas simuladas de Java como Mockito.
Por ejemplo, dado el siguiente archivo denominado Helpers.java que contiene una función createCluster que devuelve información sobre el nuevo clúster:
// 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();
}
}
Y dado el siguiente archivo denominado Main.java que llama a la función 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());
}
}
El siguiente archivo denominado HelpersTest.java comprueba si la función createCluster devuelve la respuesta esperada. En lugar de crear un clúster en el área de trabajo de destino, esta prueba simula un WorkspaceClient objeto, define la configuración del objeto ficticio y, a continuación, pasa el objeto ficticio a la createCluster función. A continuación, la prueba comprueba si la función devuelve el nuevo identificador esperado del clúster ficticio.
// 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);
}
}
Solución de problemas
En esta sección se describen las soluciones a problemas comunes con el SDK de Databricks para Java.
Para notificar problemas o cualquier otro comentario, cree un problema de GitHub para el SDK de Databricks para Java.
Error: No se puede analizar la respuesta
Si recibe el siguiente error al intentar usar el SDK de Databricks para Java, casi siempre indica un problema con la configuración de autenticación.
Error: unable to parse response. This is likely a bug in the Databricks SDK for Java or the underlying REST API.
Si se produce este error, compruebe lo siguiente:
- Asegúrese de que el host de Databricks está configurado correctamente.
- Confirme que el método de autenticación tiene los permisos necesarios para la operación de API que está intentando realizar.
- Si está detrás de un firewall corporativo, asegúrese de que no está bloqueando ni redirigiendo el tráfico de la API.
Una causa común de este error es un enlace privado que redirige al SDK a una página de inicio de sesión, la cual el SDK no puede procesar. Esto suele ocurrir al intentar acceder a un área de trabajo habilitada para vínculo privado configurada sin acceso a Internet público desde una red diferente a la que pertenece el punto de conexión de VPC.
Para obtener más información, consulte:
Recursos adicionales
Para más información, vea:
- SDK de Databricks para Java LÉAME
- Referencia de la API Databricks SDK para Java
- Ejemplos de código adicionales
- Registro
- Operaciones de larga duración
- Respuestas paginadas