Поделиться через


Создание и запуск JAR Scala и Java на бессерверных вычислительных ресурсах

Это важно

Бессерверные задания на Scala и Java находятся на стадии бета. JAR-задачи можно использовать для распространения вашего JAR. Если она еще не включена, см. статью "Управление предварительными версиями Azure Databricks ".

Архив Java (JAR) упаковывает код Java или Scala в один файл. В этой статье показано, как создать JAR-файл с кодом Spark и развернуть его как задание Lakeflow на бессерверных вычислениях.

Подсказка

Для автоматизированного развертывания и непрерывной интеграции используйте пакеты ресурсов Databricks для создания проекта из шаблона с предварительно настроенными параметрами сборки и развертывания. См. Создание JAR-файла Scala с использованием пакетов ресурсов Databricks и пакет, загружающий JAR-файл в каталог Unity. В этой статье описывается ручной подход к развертыванию или обучение работе JAR с бессерверными вычислениями.

Требования

В локальной среде разработки должно быть следующее:

  • sbt 1.11.7 или более поздней версии (для Scala JARs)
  • Maven 3.9.0 или более поздней версии (для JAVA JARs)
  • Версии JDK, Scala и Databricks Connect, соответствующие бессерверной среде (в этом примере используется JDK 17, Scala 2.13.16 и Databricks Connect 17.0.1)

Шаг 1. Создание JAR-файла

Scala

  1. Выполните следующую команду, чтобы создать проект Scala:

    sbt new scala/scala-seed.g8
    

    При появлении запроса введите имя проекта, например my-spark-app.

  2. Замените содержимое файла build.sbt следующим образом:

    scalaVersion := "2.13.16"
    libraryDependencies += "com.databricks" %% "databricks-connect" % "17.0.1"
    // other dependencies go here...
    
    // to run with new jvm options, a fork is required otherwise it uses same options as sbt process
    fork := true
    javaOptions += "--add-opens=java.base/java.nio=ALL-UNNAMED"
    
  3. Измените или создайте файл project/assembly.sbt и добавьте эту строку:

    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")
    
  4. Создайте ваш основной класс в src/main/scala/example/DatabricksExample.scala:

    package com.examples
    
    import org.apache.spark.sql.SparkSession
    
    object SparkJar {
      def main(args: Array[String]): Unit = {
        val spark = SparkSession.builder().getOrCreate()
    
        // Prints the arguments to the class, which
        // are job parameters when run as a job:
        println(args.mkString(", "))
    
        // Shows using spark:
        println(spark.version)
        println(spark.range(10).limit(3).collect().mkString(" "))
      }
    }
    
  5. Чтобы создать JAR-файл, выполните следующую команду:

    sbt assembly
    

Ява

  1. Выполните следующие команды, чтобы создать новую структуру проекта Maven:

    # Create all directories at once
    mkdir -p my-spark-app/src/main/java/com/examples
    
    cd my-spark-app
    
  2. pom.xml Создайте файл в корневом каталоге проекта со следующим содержимым:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
             http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.examples</groupId>
      <artifactId>my-spark-app</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <scala.binary.version>2.13</scala.binary.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
    
        <dependency>
          <groupId>com.databricks</groupId>
          <artifactId>databricks-connect_${scala.binary.version}</artifactId>
          <version>17.0.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
    
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.6.1</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                      <mainClass>com.examples.SparkJar</mainClass>
                    </transformer>
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </project>
    
  3. Создайте ваш основной класс в src/main/java/com/examples/SparkJar.java:

    package com.examples;
    
    import org.apache.spark.sql.SparkSession;
    import java.util.stream.Collectors;
    
    public class SparkJar {
      public static void main(String[] args) {
        SparkSession spark = SparkSession.builder().getOrCreate();
    
        // Prints the arguments to the class, which
        // are job parameters when run as a job:
        System.out.println(String.join(", ", args));
    
        // Shows using spark:
        System.out.println(spark.version());
        System.out.println(
          spark.range(10).limit(3).collectAsList().stream()
            .map(Object::toString)
            .collect(Collectors.joining(" "))
        );
      }
    }
    
  4. Чтобы создать JAR-файл, выполните следующую команду:

    mvn clean package
    

    Скомпилированный JAR находится в каталоге target/ как my-spark-app-1.0-SNAPSHOT.jar.

шаг 2. Создание задания для запуска JAR-файла

  1. В рабочей области щелкните на значок рабочих процессовЗадания и конвейеры на боковой панели.

  2. Нажмите кнопку "Создать", а затем "Задание".

  3. Щелкните плитку JAR , чтобы настроить первую задачу. Если плитка JAR недоступна, нажмите кнопку "Добавить другой тип задачи " и найдите JAR-файл.

  4. При необходимости замените имя задания, в котором по умолчанию используется New Job <date-time>имя задания.

  5. В поле "Имя задачи" введите имя задачи, например JAR_example.

  6. При необходимости выберите JAR в раскрывающемся меню "Тип ".

  7. Введите пакет и класс вашего Jar в главный класс. Если вы выполнили приведенный выше пример, введите com.examples.SparkJar.

  8. Для вычислений выберите бессерверные.

  9. Настройте бессерверную среду:

    1. Выберите среду, а затем щелкните значок карандаша.Измените его, чтобы настроить его.
    2. Выберите 4-scala-preview для версии окружения.
    3. Добавьте JAR-файл, перетащив его в селектор файлов или выбрав его из тома каталога Unity или расположения рабочей области.
  10. Для параметров введите ["Hello", "World!"].

  11. Нажмите Создать задачу.

Шаг 3. Запуск задания и просмотр сведений о выполнении задания

Щелкните Кнопка , чтобы запустить рабочий процесс. Чтобы просмотреть сведения о выполнении, щелкните Просмотреть выполнение в всплывающем окне Запущенного выполнения или щелкните ссылку в столбце Время начала для запуска в представлении выполнения заданий.

По завершении выполнения выходные данные отображаются на панели вывода , включая аргументы, переданные задаче.

Дальнейшие действия