Share via


Java용 Databricks SDK

이 문서에서는 Java용 Databricks SDK를 사용하여 Azure Databricks 계정, 작업 영역 및 관련 리소스에서 작업을 자동화하는 방법을 알아봅니다. 이 문서에서는 Java README, API 참조예제에 대한 Databricks SDK를 보완합니다.

참고 항목

이 기능은 베타 버전이며 프로덕션 환경에서도 사용할 수 있습니다.

베타 기간 동안 Databricks는 코드가 의존하는 Java용 Databricks SDK의 특정 부 버전에 대한 종속성을 고정하는 것이 좋습니다. 예를 들어 Maven과 같은 pom.xml 파일에 종속성을 고정할 수 있습니다. 종속성 고정에 대한 자세한 내용은 종속성 메커니즘 소개를 참조하세요.

시작하기 전에

Java용 Databricks SDK 사용을 시작하기 전에 개발 머신에 다음이 있어야 합니다.

  • Azure Databricks 인증 구성
  • Java 8 이상과 호환되는 JDK(Java Development Kit)입니다. Java용 Databricks SDK를 사용한 CI(연속 통합) 테스트는 Java 버전 8, 11, 17 및 20과 호환됩니다.
  • Java 호환 IDE(통합 개발 환경)를 사용하는 것이 좋습니다. Databricks는 IntelliJ IDEA를 권장합니다.

Java용 Databricks SDK 시작

  1. 프로젝트 pom.xml 파일에서 Java용 Databricks SDK에 종속되도록 빌드 시스템에 지시합니다. 이렇게 하려면 파일의 기존 <dependencies> 섹션에 다음 <dependency>pom.xml 추가합니다. 섹션이 <dependencies> 파일 내에 pom.xml 아직 없는 경우 부모 요소 pom.xml 도 파일에 추가 <dependencies> 해야 합니다.

    예를 들어 IntelliJ IDEA에서 프로젝트의 pom.xml 파일을 열려면 도구 창 > 프로젝트 보기를 > 클릭한 다음 두 번 클릭하여 프로젝트 이름> src > pom.xml 엽니다.

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

    참고 항목

    Java용 Databricks SDK의 최신 버전으로 바꿔 0.0.1 야 합니다. Maven 중앙 리포지토리에서 최신 버전을 찾을 수 있습니다.

  2. Java용 Databricks SDK에 대해 선언된 종속성을 사용하도록 프로젝트에 지시합니다. 예를 들어 IntelliJ IDEA의 프로젝트 도구 창에서 프로젝트의 루트 노드를 마우스 오른쪽 단추로 클릭한 다음 프로젝트 다시 로드를 클릭합니다.

  3. Java용 Databricks SDK를 가져오고 Azure Databricks 작업 영역의 모든 클러스터를 나열하는 코드를 추가합니다. 예를 들어 프로젝트의 Main.java 파일에서 코드는 다음과 같습니다.

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

    참고 항목

    이전 호출 WorkspaceClient w = new WorkspaceClient()에서 인수를 설정하지 않음으로써 Java용 Databricks SDK는 Azure Databricks 인증을 수행하기 위해 기본 프로세스를 사용합니다. 이 기본 동작을 재정의하려면 다음 인증 섹션을 참조하세요.

  4. 프로젝트를 빌드합니다. 예를 들어 IntelliJ IDEA에서 이 작업을 수행하려면 기본 메뉴에서 빌드 프로젝트 빌드 > 를 클릭합니다.

  5. 기본 파일을 실행합니다. 예를 들어 프로젝트의 Main.java 파일에 대한 IntelliJ IDEA에서 이 작업을 수행하려면 기본 메뉴에서 'Main' 실행 실행을 > 클릭합니다.

  6. 클러스터 목록이 나타납니다. 예를 들어 IntelliJ IDEA에서는 실행 도구 창에 있습니다. 이 도구 창을 표시하려면 기본 메뉴에서 도구 창 > 실행 보기를 > 클릭합니다.

Azure Databricks 계정 또는 작업 영역을 사용하여 Java용 Databricks SDK 인증

Java용 Databricks SDK는 인증에 대한 통합되고 일관된 아키텍처 및 프로그래밍 방식인 Databricks 클라이언트 통합 인증 표준을 구현합니다. 이 방법을 사용하면 Azure Databricks를 사용하여 인증을 보다 중앙 집중화하고 예측 가능하게 설정하고 자동화할 수 있습니다. 이를 통해 Databricks 인증을 한 번 구성한 다음, 추가 인증 구성 변경 없이 여러 Databricks 도구 및 SDK에서 해당 구성을 사용할 수 있습니다. Java의 전체 코드 예제를 비롯한 자세한 내용은 Databricks 클라이언트 통합 인증을 참조하세요.

참고 항목

Java용 Databricks SDK는 아직 Azure 관리 ID 인증구현하지 않았습니다.

Java용 Databricks SDK를 사용하여 Databricks 인증을 초기화하는 데 사용할 수 있는 코딩 패턴 중 일부는 다음과 같습니다.

  • 다음 중 하나를 수행하여 Databricks 기본 인증을 사용합니다.

    • 대상 Databricks 인증 유형에 필요한 필드를 사용하여 사용자 지정 Databricks 구성 프로필을 만들거나 식별합니다. 그런 다음 환경 변수를 DATABRICKS_CONFIG_PROFILE 사용자 지정 구성 프로필의 이름으로 설정합니다.
    • 대상 Databricks 인증 유형에 필요한 환경 변수를 설정합니다.

    그런 다음, 다음과 같이 Databricks 기본 인증을 사용하여 WorkspaceClient 개체를 인스턴스화합니다.

    import com.databricks.sdk.WorkspaceClient;
    // ...
    WorkspaceClient w = new WorkspaceClient();
    // ...
    
  • Azure Databricks 개인용 액세스 토큰과 같은 중요한 정보를 코드에 노출할 위험이 있으므로 필수 필드를 하드 코딩하는 것은 지원되지만 권장되지는 않습니다. 다음 예제에서는 Databricks 토큰 인증에 대한 Azure Databricks 호스트 및 액세스 토큰 값을 하드 코드합니다.

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

Java 추가 정보용 Databricks SDK의 인증참조하세요.

Java용 Databricks SDK에서 Databricks 유틸리티 및 Java 사용

Databricks 유틸리티 는 개체 스토리지를 효율적으로 작업하고, Notebook을 연결 및 매개 변수화하고, 비밀로 작업할 수 있도록 하는 몇 가지 도우미 함수를 제공합니다. Databricks는 프로그래밍 방식으로 Databricks 유틸리티에 액세스할 수 있도록 Java 코드로 호출할 수 있는 Databricks Utilities for Scala 라이브러리를 제공합니다.

Java 코드를 사용하여 Scala용 Databricks 유틸리티를 호출하려면 다음을 수행합니다.

  1. Java 프로젝트에서 이전 섹션에 설명된 대로 Java용 Databricks SDK에 대한 종속성을 선언합니다.

  2. Scala용 Databricks 유틸리티 라이브러리에 대한 종속성을 선언합니다. 이렇게 하려면 파일의 기존 <dependencies> 섹션에 pom.xml 다음 <dependency> 을 추가합니다.

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

    참고 항목

    최신 버전의 Databricks Utilities for Scala 라이브러리로 바꿔 0.1.4 야 합니다. Maven 중앙 리포지토리에서 최신 버전을 찾을 수 있습니다.

  3. Scala용 Databricks 유틸리티에 대해 선언된 종속성을 사용하도록 프로젝트에 지시합니다. 예를 들어 IntelliJ IDEA의 프로젝트 도구 창에서 프로젝트의 루트 노드를 클릭한 다음 Maven > 프로젝트 다시 로드를 클릭합니다.

  4. 코드를 추가하여 Scala용 Databricks 유틸리티를 가져온 다음 호출합니다. 예를 들어 다음 코드는 Unity 카탈로그 볼륨을 자동화합니다. 이 예제에서는 작업 영역 내의 볼륨 경로에 이름이 지정된 zzz_hello.txt 파일을 만들고 파일에서 데이터를 읽은 다음 파일을 삭제합니다.

    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. 프로젝트를 빌드하고 기본 파일을 실행합니다.

코드 예제

다음 코드 예제에서는 Java용 Databricks SDK를 사용하여 클러스터를 만들고 삭제하고, 작업을 만들고, 계정 수준 그룹을 나열하는 방법을 보여 줍니다. 이러한 코드 예제에서는 Java의 기본 Azure Databricks 인증 프로세스에 Databricks SDK를 사용합니다.

추가 코드 예제는 GitHub의 Java용 Databricks SDK 리포지토리에 있는 예제 폴더를 참조하세요.

클러스터 만들기

이 코드 예제에서는 지정된 Databricks 런타임 버전 및 클러스터 노드 형식을 사용하여 클러스터를 만듭니다. 이 클러스터에는 하나의 작업자가 있으며 클러스터는 15분의 유휴 시간 후에 자동으로 종료됩니다.

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을 사용하는 클러스터 만들기

참고 항목

JDK 8은 완전히 지원됩니다. JDK 17은 Databricks 런타임 버전 13.1 이상에 대한 공개 미리 보기로 제공됩니다.

이 섹션에서는 JDK(Java Development Kit)를 사용하여 클러스터를 만드는 방법에 대한 가이드를 제공합니다. JDK 17을 사용하여 Notebook 및 작업에서 Java를 사용하는 클러스터를 만드는 방법을 알아봅니다.

클러스터를 만들 때 고급 옵션 > Spark > 환경 변수에 다음 환경 변수를 추가하여 클러스터에서 드라이버와 실행기 모두에 JDK 17을 사용하도록 지정합니다.

JNAME=zulu17-ca-amd64

클러스터 영구 삭제

이 코드 예제에서는 작업 영역에서 지정된 클러스터 ID를 사용하여 클러스터를 영구적으로 삭제합니다.

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

작업 만들기

이 코드 예제에서는 지정된 클러스터에서 지정된 Notebook을 실행하는 데 사용할 수 있는 Azure Databricks 작업을 만듭니다. 이 코드가 실행되면 터미널의 사용자로부터 기존 Notebook의 경로, 기존 클러스터 ID 및 관련 작업 설정을 가져옵니다.

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

계정 수준 그룹 나열

이 코드 예제에서는 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());
    }
  }
}

Java용 Databricks SDK와 함께 Scala 사용

Java용 Databricks SDK와 함께 Scala 프로젝트를 사용할 수 있습니다. 시작하기 전에 개발 머신에 다음이 있어야 합니다.

  • Azure Databricks 인증 구성
  • Scala 호환 IDE(통합 개발 환경)를 사용하는 것이 좋습니다. Databricks는 Scala 플러그 인을 사용하여 IntelliJ IDEA를 권장합니다. 이러한 지침은 IntelliJ IDEA Community Edition 2023.3.6에서 테스트되었습니다. 다른 버전의 IntelliJ IDEA를 사용하는 경우 다음 지침이 다를 수 있습니다.
  • Java 8 이상과 호환되는 JDK(Java Development Kit)입니다. 애플리케이션을 실행하거나 Azure Databricks 클러스터에서 라이브러리를 사용하려는 경우 Databricks는 클러스터의 JDK 버전과 일치하는 JDK 버전을 사용하는 것이 좋습니다. 특정 Databricks 런타임에 포함된 JDK 버전을 찾으려면 Databricks 런타임 릴리스 정보 버전 및 호환성을 참조 하세요. IntelliJ IDEA를 사용하는 경우 Scala 프로젝트를 만드는 동안 기존 로컬 JDK 설치를 선택하거나 새 JDK를 로컬로 설치할 수 있습니다.
  • Scala 빌드 도구입니다. Databricks는 권장합니다.sbt IntelliJ IDEA를 사용하는 경우 Scala 프로젝트를 만드는 동안 사용할 버전을 선택할 sbt 수 있습니다.
  • Scala 애플리케이션을 실행하거나 Azure Databricks 클러스터에서 라이브러리를 사용하려는 경우 Databricks는 클러스터의 Scala 버전과 일치하는 Scala 버전을 사용하는 것이 좋습니다. 특정 Databricks 런타임에 포함된 Scala 버전을 찾으려면 Databricks 런타임 릴리스 정보 버전 및 호환성을 참조하세요. IntelliJ IDEA를 사용하는 경우 Scala 프로젝트를 만드는 동안 사용할 Scala 버전을 선택할 수 있습니다.

Scala 프로젝트를 구성, 빌드 및 실행하려면 다음을 수행합니다.

  1. 프로젝트의 build.sbt 파일에서 파일 끝에 다음 줄을 추가하여 Java용 Databricks SDK 라이브러리에 종속된 다음 파일을 저장합니다.

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

    참고 항목

    최신 버전의 Java용 Databricks SDK 라이브러리로 바꿔 0.2.0 야 합니다. Maven 중앙 리포지토리에서 최신 버전을 찾을 수 있습니다.

  2. Java용 Databricks SDK에 대해 선언된 종속성을 사용하도록 프로젝트에 지시합니다. 예를 들어 IntelliJ IDEA에서 sbt 변경 내용 로드 알림 아이콘을 클릭합니다.

  3. Java용 Databricks SDK를 가져오고 Azure Databricks 작업 영역의 모든 클러스터를 나열하는 코드를 추가합니다. 예를 들어 프로젝트의 Main.scala 파일에서 코드는 다음과 같습니다.

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

    참고 항목

    이전 호출 val w = new WorkspaceClient()에서 인수를 설정하지 않음으로써 Java용 Databricks SDK는 Azure Databricks 인증을 수행하기 위해 기본 프로세스를 사용합니다. 이 기본 동작을 재정의하려면 다음 인증 섹션을 참조하세요.

  4. 프로젝트를 빌드합니다. 예를 들어 IntelliJ IDEA에서 이 작업을 수행하려면 기본 메뉴에서 빌드 프로젝트 빌드 > 를 클릭합니다.

  5. 기본 파일을 실행합니다. 예를 들어 프로젝트의 Main.scala 파일에 대한 IntelliJ IDEA에서 이 작업을 수행하려면 기본 메뉴에서 'Main.scala' 실행을 > 클릭합니다.

  6. 클러스터 목록이 나타납니다. 예를 들어 IntelliJ IDEA에서는 실행 도구 창에 있습니다. 이 도구 창을 표시하려면 기본 메뉴에서 도구 창 > 실행 보기를 > 클릭합니다.

Java용 Databricks SDK와 함께 Databricks 유틸리티 및 Scala 사용

Databricks 유틸리티 는 개체 스토리지를 효율적으로 작업하고, Notebook을 연결 및 매개 변수화하고, 비밀로 작업할 수 있도록 하는 몇 가지 도우미 함수를 제공합니다. Databricks는 Scala를 사용하여 Databricks 유틸리티에 프로그래밍 방식으로 액세스할 수 있도록 Scala용 Databricks 유틸리티 라이브러리를 제공합니다.

Scala용 Databricks 유틸리티를 호출하려면 다음을 수행합니다.

  1. Scala 프로젝트에서 이전 섹션에 설명된 대로 Java용 Databricks SDK에 대한 종속성을 선언합니다.

  2. Scala용 Databricks 유틸리티 라이브러리에 대한 종속성을 선언합니다. 예를 들어 프로젝트의 build.sbt 파일에서 파일 끝에 다음 줄을 추가한 다음 파일을 저장합니다.

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

    참고 항목

    최신 버전의 Databricks Utilities for Scala 라이브러리로 바꿔 0.1.4 야 합니다. Maven 중앙 리포지토리에서 최신 버전을 찾을 수 있습니다.

  3. Scala용 Databricks 유틸리티에 대해 선언된 종속성을 사용하도록 프로젝트에 지시합니다. 예를 들어 IntelliJ IDEA에서 sbt 변경 내용 로드 알림 아이콘을 클릭합니다.

  4. 코드를 추가하여 Scala용 Databricks 유틸리티를 가져온 다음 호출합니다. 예를 들어 다음 코드는 Unity 카탈로그 볼륨을 자동화합니다. 이 예제에서는 작업 영역 내의 볼륨 경로에 이름이 지정된 zzz_hello.txt 파일을 만들고 파일에서 데이터를 읽은 다음 파일을 삭제합니다.

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

    참고 항목

    이전 호출 val dbutils = DBUtils.getDBUtils()에서 인수를 설정하지 않음으로써 Scala용 Databricks 유틸리티는 Azure Databricks 인증을 수행하기 위해 기본 프로세스를 사용합니다.

    이 기본 동작을 재정의하려면 인스턴스화된 DatabricksCfg 개체를 인수로 전달합니다 getDBUtils. 자세한 내용은 이전 인증 섹션을 참조하세요.

    그러나 코드가 Databricks 런타임 내에서 실행되는 경우 이 DatabricksCfg 개체는 무시됩니다. 이는 Databricks Runtime 내에서 실행할 때 Scala용 Databricks 유틸리티가 기본 제공 Databricks 유틸리티에 위임하기 때문입니다.

  5. 프로젝트를 빌드하고 기본 파일을 실행합니다.

테스팅

코드를 테스트하려면 JUnit과 같은 Java 테스트 프레임워크를 사용합니다. Azure Databricks REST API 엔드포인트를 호출하거나 Azure Databricks 계정 또는 작업 영역의 상태를 변경하지 않고 시뮬레이션된 조건에서 코드를 테스트하려면 Mockito와 같은 Java 모의 라이브러리를 사용합니다.

예를 들어 새 클러스터에 대한 정보를 반환하는 함수를 createCluster 포함하는 다음 파일을 지정 Helpers.java 합니다.

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

함수를 호출 createCluster 하는 다음과 같은 파일이 제공됩니다Main.java.

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

명명된 HelpersTest.java 다음 파일은 함수가 createCluster 예상 응답을 반환하는지 여부를 테스트합니다. 이 테스트는 대상 작업 영역에서 클러스터를 만드는 대신 개체를 WorkspaceClient 모의하고 모의 개체의 설정을 정의한 다음 모의 개체를 함수에 createCluster 전달합니다. 그런 다음 테스트는 함수가 모의 클러스터의 예상 ID를 반환하는지 여부를 검사.

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

추가 리소스

자세한 내용은 다음을 참조하세요.