Databricks SDK ل Java

في هذه المقالة، ستتعلم كيفية أتمتة العمليات في حسابات Azure Databricks ومساحات العمل والموارد ذات الصلة باستخدام Databricks SDK ل Java. تكمل هذه المقالة Databricks SDK ل Java README ومرجع API والأمثلة.

إشعار

هذه الميزة في Beta ولا بأس من استخدامها في الإنتاج.

خلال فترة بيتا، توصي Databricks بتثبيت تبعية على الإصدار الثانوي المحدد من Databricks SDK ل Java الذي تعتمد عليه التعليمات البرمجية الخاصة بك. على سبيل المثال، يمكنك تثبيت التبعيات في ملفات مثل pom.xml Maven. لمزيد من المعلومات حول تثبيت التبعيات، راجع مقدمة إلى آلية التبعية.

قبل البدء

قبل البدء في استخدام Databricks SDK ل Java، يجب أن يحتوي جهاز التطوير الخاص بك على:

  • تم تكوين مصادقة Azure Databricks.
  • حزمة تطوير Java (JDK) متوافقة مع Java 8 أو أعلى. يتوافق اختبار التكامل المستمر (CI) مع Databricks SDK ل Java مع إصدارات Java 8 و11 و17 و20.
  • يوصى ببيئة تطوير متكاملة متوافقة مع Java (IDE). توصي Databricks ب IntelliJ IDEA.

بدء استخدام Databricks SDK ل Java

  1. في ملف مشروعك pom.xml ، اطلب من نظام البناء الخاص بك الاعتماد على Databricks SDK ل Java. للقيام بذلك، أضف ما يلي <dependency> إلى pom.xml قسم الملف الموجود <dependencies> . <dependencies> إذا لم يكن المقطع موجودا بالفعل داخل pom.xml الملف، يجب أيضا إضافة <dependencies> العنصر الأصل إلى pom.xml الملف.

    على سبيل المثال، لفتح ملف المشروع pom.xml في IntelliJ IDEA، انقر فوق عرض > أداة Windows > Project، ثم انقر نقرا مزدوجا لفتح src > اسم> المشروع pom.xml.

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

    إشعار

    تأكد من استبدال 0.0.1 بأحدث إصدار من Databricks SDK ل Java. يمكنك العثور على أحدث إصدار في مستودع Maven المركزي.

  2. اطلب من مشروعك أن يأخذ التبعية المعلنة على Databricks SDK ل Java. على سبيل المثال، في IntelliJ IDEA، في نافذة أداة المشروع الخاصة بمشروعك، انقر بزر الماوس الأيمن فوق عقدة جذر المشروع، ثم انقر فوق إعادة تحميل المشروع.

  3. أضف التعليمات البرمجية لاستيراد Databricks SDK ل Java ولسرد جميع المجموعات في مساحة عمل 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()، يستخدم Databricks SDK ل Java العملية الافتراضية لمحاولة تنفيذ مصادقة Azure Databricks. لتجاوز هذا السلوك الافتراضي، راجع قسم المصادقة التالي.

  4. أنشئ مشروعك. على سبيل المثال، للقيام بذلك في IntelliJ IDEA، من القائمة الرئيسية، انقر فوق Build > Build Project.

  5. قم بتشغيل الملف الرئيسي. على سبيل المثال، للقيام بذلك في IntelliJ IDEA لملف مشروع Main.java ، من القائمة الرئيسية، انقر فوق Run > Run 'Main'.

  6. تظهر قائمة المجموعات. على سبيل المثال، في IntelliJ IDEA، هذا في نافذة أداة التشغيل . لعرض نافذة الأداة هذه، من القائمة الرئيسية، انقر فوق عرض > أداة تشغيل Windows.>

مصادقة Databricks SDK ل Java باستخدام حساب Azure Databricks أو مساحة العمل

ينفذ Databricks SDK ل Java معيار المصادقة الموحد لعميل Databricks، وهو نهج معماري وبرنامجي موحد ومتسق للمصادقة. يساعد هذا الأسلوب على جعل إعداد المصادقة وأتمتتها باستخدام Azure Databricks أكثر مركزية وقابلية للتنبؤ. يمكنك من تكوين مصادقة Databricks مرة واحدة ثم استخدام هذا التكوين عبر أدوات Databricks متعددة وSDKs دون مزيد من تغييرات تكوين المصادقة. لمزيد من المعلومات، بما في ذلك أمثلة التعليمات البرمجية الأكثر اكتمالا في Java، راجع المصادقة الموحدة لعميل Databricks.

إشعار

لم تنفذ Databricks SDK ل Java مصادقة الهويات المدارة من Azure بعد.

تتضمن بعض أنماط الترميز المتوفرة لتهيئة مصادقة Databricks باستخدام Databricks SDK ل Java ما يلي:

  • استخدم المصادقة الافتراضية ل Databricks عن طريق القيام بأحد الإجراءات التالية:

    • إنشاء أو تحديد ملف تعريف تكوين Databricks مخصص مع الحقول المطلوبة لنوع مصادقة Databricks الهدف. ثم قم بتعيين DATABRICKS_CONFIG_PROFILE متغير البيئة إلى اسم ملف تعريف التكوين المخصص.
    • تعيين متغيرات البيئة المطلوبة لنوع مصادقة Databricks الهدف.

    ثم قم بإنشاء مثيل على سبيل المثال لعنصر WorkspaceClient مع مصادقة Databricks الافتراضية كما يلي:

    import com.databricks.sdk.WorkspaceClient;
    // ...
    WorkspaceClient w = new WorkspaceClient();
    // ...
    
  • الترميز المضمن للحاويات المطلوبة مدعوم ولكن غير مستحسن، لأنه يخاطر بكشف المعلومات الحساسة في التعليمات البرمجية الخاصة بك، مثل الرموز المميزة للوصول الشخصي ل Azure Databricks. المثال التالي للرموز الثابتة لمضيف Azure Databricks وقيم الرمز المميز للوصول لمصادقة رمز Databricks المميز:

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

راجع أيضا المصادقة في Databricks SDK ل Java README.

استخدام Databricks Utilities وJava مع Databricks SDK ل Java

توفر Databricks Utilities العديد من وظائف المساعد لتسهيل العمل مع تخزين الكائنات بكفاءة، وتسلسل دفاتر الملاحظات وتحديد معلماتها، والعمل مع الأسرار. يوفر Databricks أدوات Databricks المساعدة لمكتبة Scala ، والتي يمكنك الاتصال بها باستخدام تعليمات Java البرمجية، لتمكينك من الوصول برمجيا إلى Databricks Utilities.

لاستخدام التعليمات البرمجية Java لاستدعاء Databricks Utilities ل Scala، قم بما يلي:

  1. في مشروع Java الخاص بك، أعلن عن تبعية على Databricks SDK ل Java، كما هو موضح في القسم السابق.

  2. أعلن عن تبعية على Databricks Utilities لمكتبة Scala. للقيام بذلك، أضف ما يلي <dependency> إلى pom.xml قسم الملف الموجود <dependencies> :

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

    إشعار

    تأكد من استبدال 0.1.4 بأحدث إصدار من Databricks Utilities لمكتبة Scala. يمكنك العثور على أحدث إصدار في مستودع Maven المركزي.

  3. اطلب من مشروعك أن يأخذ التبعية المعلنة على أدوات Databricks المساعدة ل Scala. على سبيل المثال، في IntelliJ IDEA، في نافذة أداة المشروع لمشروعك، انقر فوق العقدة الجذر للمشروع، ثم انقر فوق Maven > Reload Project.

  4. إضافة تعليمة برمجية لاستيراد ثم استدعاء الأداة المساعدة Databricks ل Scala. على سبيل المثال، تقوم التعليمات البرمجية التالية بأتمتة وحدة تخزين كتالوج 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. قم بإنشاء مشروعك وتشغيل الملف الرئيسي.

أمثلة على التعليمات البرمجية

توضح أمثلة التعليمات البرمجية التالية كيفية استخدام Databricks SDK ل Java لإنشاء وحذف المجموعات وإنشاء الوظائف وسرد المجموعات على مستوى الحساب. تستخدم أمثلة التعليمات البرمجية هذه Databricks SDK لعملية مصادقة Azure Databricks الافتراضية ل Java.

للحصول على أمثلة تعليمات برمجية إضافية، راجع مجلد الأمثلة في مستودع Databricks SDK ل Java في GitHub.

إنشاء نظام مجموعة

ينشئ مثال التعليمات البرمجية هذا مجموعة مع إصدار Databricks Runtime المحدد ونوع عقدة نظام المجموعة. تحتوي هذه المجموعة على عامل واحد، وسيتم إنهاء المجموعة تلقائيا بعد 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 والإصدارات الأحدث.

يوفر هذا القسم دليلا لإنشاء نظام مجموعة باستخدام Java Development Kit (JDK). تعرف على كيفية إنشاء نظام مجموعة باستخدام JDK 17 لاستخدام Java في دفاتر الملاحظات والوظائف.

عند إنشاء نظام مجموعة، حدد أن نظام المجموعة يستخدم JDK 17 لكل من برنامج التشغيل والمنفذ عن طريق إضافة متغير البيئة التالي إلى Advanced Options > Spark > Environment Variables:

JNAME=zulu17-ca-amd64

حذف مجموعة بشكل دائم

يحذف مثال التعليمات البرمجية هذا نظام المجموعة بمعرف نظام المجموعة المحدد من مساحة العمل بشكل دائم.

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

قم بإنشاء وظيفة

ينشئ مثال التعليمات البرمجية هذا مهمة Azure Databricks التي يمكن استخدامها لتشغيل دفتر الملاحظات المحدد على نظام المجموعة المحدد. أثناء تشغيل هذه التعليمات البرمجية، فإنه يحصل على مسار دفتر الملاحظات الحالي، ومعرف نظام المجموعة الحالي، وإعدادات المهمة ذات الصلة من المستخدم في المحطة الطرفية.

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

استخدام Scala مع Databricks SDK ل Java

يمكنك استخدام مشاريع Scala مع Databricks SDK ل Java. قبل البدء، يجب أن يحتوي جهاز التطوير الخاص بك على:

  • تم تكوين مصادقة Azure Databricks.
  • يوصى ببيئة تطوير متكاملة متوافقة مع Scala (IDE). توصي Databricks ب IntelliJ IDEA باستخدام المكون الإضافي Scala. تم اختبار هذه التعليمات باستخدام IntelliJ IDEA Community Edition 2023.3.6. إذا كنت تستخدم إصدارا أو إصدارا مختلفا من IntelliJ IDEA، فقد تختلف الإرشادات التالية.
  • حزمة تطوير Java (JDK) متوافقة مع Java 8 أو أعلى. إذا كنت ترغب في تشغيل تطبيقاتك أو استخدام مكتباتك على مجموعة Azure Databricks، يوصي Databricks باستخدام إصدار JDK يطابق إصدار JDK على نظام المجموعة. للعثور على إصدار JDK المضمن مع وقت تشغيل Databricks محدد، راجع إصدارات ملاحظات إصدار Databricks Runtime والتوافق. إذا كنت تستخدم IntelliJ IDEA، يمكنك اختيار تثبيت JDK محلي موجود أو تثبيت JDK جديد محليا أثناء إنشاء مشروع Scala.
  • أداة بناء Scala. توصي Databricks .sbt إذا كنت تستخدم IntelliJ IDEA، يمكنك اختيار الإصدار الذي sbt تريد استخدامه أثناء إنشاء مشروع Scala.
  • Scala. إذا كنت ترغب في تشغيل تطبيقاتك أو استخدام مكتباتك على مجموعة Azure Databricks، يوصي Databricks باستخدام إصدار Scala يطابق إصدار Scala على نظام المجموعة. للعثور على إصدار Scala المضمن مع Databricks Runtime محدد، راجع إصدارات ملاحظات إصدار Databricks Runtime والتوافق. إذا كنت تستخدم IntelliJ IDEA، يمكنك اختيار إصدار Scala لاستخدامه أثناء إنشاء مشروع Scala.

لتكوين مشروع Scala الخاص بك وبنته وتشغيله:

  1. في ملف مشروعك build.sbt ، خذ تبعية على Databricks SDK لمكتبة Java عن طريق إضافة السطر التالي إلى نهاية الملف، ثم احفظ الملف:

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

    إشعار

    تأكد من استبدال 0.2.0 بأحدث إصدار من Databricks SDK لمكتبة Java. يمكنك العثور على أحدث إصدار في مستودع Maven المركزي.

  2. اطلب من مشروعك أن يأخذ التبعية المعلنة على Databricks SDK ل Java. على سبيل المثال، في IntelliJ IDEA، انقر فوق رمز إعلام Load sbt changes .

  3. أضف التعليمات البرمجية لاستيراد Databricks SDK ل Java ولسرد جميع المجموعات في مساحة عمل 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()، يستخدم Databricks SDK ل Java العملية الافتراضية لمحاولة تنفيذ مصادقة Azure Databricks. لتجاوز هذا السلوك الافتراضي، راجع قسم المصادقة التالي.

  4. أنشئ مشروعك. على سبيل المثال، للقيام بذلك في IntelliJ IDEA، من القائمة الرئيسية، انقر فوق Build > Build Project.

  5. قم بتشغيل الملف الرئيسي. على سبيل المثال، للقيام بذلك في IntelliJ IDEA لملف مشروع Main.scala ، من القائمة الرئيسية، انقر فوق Run > Run 'Main.scala'.

  6. تظهر قائمة المجموعات. على سبيل المثال، في IntelliJ IDEA، هذا في نافذة أداة التشغيل . لعرض نافذة الأداة هذه، من القائمة الرئيسية، انقر فوق عرض > أداة تشغيل Windows.>

استخدام Databricks Utilities وSc scala مع Databricks SDK ل Java

توفر Databricks Utilities العديد من وظائف المساعد لتسهيل العمل مع تخزين الكائنات بكفاءة، وتسلسل دفاتر الملاحظات وتحديد معلماتها، والعمل مع الأسرار. يوفر Databricks أدوات Databricks المساعدة لمكتبة Scala لتمكينك من الوصول برمجيا إلى Databricks Utilities باستخدام Scala.

لاستدعاء Databricks Utilities ل Scala، قم بما يلي:

  1. في مشروع Scala الخاص بك، أعلن عن تبعية على Databricks SDK ل Java، كما هو موضح في القسم السابق.

  2. أعلن عن تبعية على Databricks Utilities لمكتبة Scala. على سبيل المثال، في ملف المشروع build.sbt ، أضف السطر التالي إلى نهاية الملف، ثم احفظ الملف:

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

    إشعار

    تأكد من استبدال 0.1.4 بأحدث إصدار من Databricks Utilities لمكتبة Scala. يمكنك العثور على أحدث إصدار في مستودع Maven المركزي.

  3. اطلب من مشروعك أن يأخذ التبعية المعلنة على أدوات Databricks المساعدة ل Scala. على سبيل المثال، في IntelliJ IDEA، انقر فوق رمز إعلام Load sbt changes .

  4. إضافة تعليمة برمجية لاستيراد ثم استدعاء الأداة المساعدة Databricks ل Scala. على سبيل المثال، تقوم التعليمات البرمجية التالية بأتمتة وحدة تخزين كتالوج 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()، تستخدم أدوات Databricks المساعدة ل Scala العملية الافتراضية لمحاولة تنفيذ مصادقة Azure Databricks.

    لتجاوز هذا السلوك الافتراضي، مرر كائن مثيل DatabricksCfg كوسيطة إلى getDBUtils. لمزيد من المعلومات، راجع قسم المصادقة السابق.

    ومع ذلك، لاحظ أنه إذا كانت التعليمات البرمجية الخاصة بك تعمل داخل Databricks Runtime، يتم تجاهل هذا DatabricksCfg الكائن. وذلك لأن أدوات Databricks المساعدة لمفوضي Scala إلى Databricks Utilities المضمنة عند التشغيل داخل Databricks Runtime.

  5. قم بإنشاء مشروعك وتشغيل الملف الرئيسي.

الاختبار

لاختبار التعليمات البرمجية الخاصة بك، استخدم أطر عمل اختبار Java مثل JUnit. لاختبار التعليمات البرمجية الخاصة بك في ظل ظروف محاكاة دون استدعاء نقاط نهاية Azure Databricks REST API أو تغيير حالة حسابات Azure Databricks أو مساحات العمل الخاصة بك، استخدم مكتبات محاكاة Java مثل Mockito.

على سبيل المثال، بالنظر إلى الملف التالي المسمى Helpers.java الذي يحتوي على دالة createCluster تقوم بإرجاع معلومات حول نظام المجموعة الجديد:

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

وبالنظر إلى الملف التالي المسمى Main.java الذي يستدعي الدالة 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());
  }
}

يختبر الملف التالي المسمى HelpersTest.java ما إذا كانت الدالة createCluster ترجع الاستجابة المتوقعة. بدلا من إنشاء نظام مجموعة في مساحة العمل الهدف، يقوم هذا الاختبار بالسخرية من كائن WorkspaceClient ، ويحدد إعدادات الكائن المقلد، ثم يمرر الكائن المقلد إلى createCluster الوظيفة. ثم يتحقق الاختبار ما إذا كانت الدالة ترجع المعرف المتوقع لنظام المجموعة المقلدة الجديد.

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

الموارد الإضافية

لمزيد من المعلومات، راجع: