Criar e executar JARs Scala e Java em compute serverless
Beta
As funcionalidades serverless Scala e Java Job estão em versão Beta. Você pode usar JAR tarefa para implantar seu JAR. Consulte a opção "Gerenciar pré-visualizações Databricks caso ainda não esteja ativada.
Um arquivoJava (JAR) empacota código Java ou Scala em um único arquivo. Este artigo mostra como criar um JAR com código Spark e implantá-lo como um LakeFlow Job em computeserverless.
Para implantação automatizada e fluxo de trabalho de integração contínua, use Databricks ativo Bundles para criar um projeto padrão com configurações de construção e implantação pré-configuradas. Consulte Criar um JAR Scala usando Databricks ativo Bundles e Bundle que carrega um arquivo JAR para o Unity Catalog. Este artigo descreve a abordagem manual para implantações ou aprendizado de como os arquivos JAR funcionam com compute serverless .
Requisitos
Seu ambiente de desenvolvimento local deve conter o seguinte:
- sbt 1.11.7 ou superior (para JARs Scala)
- Maven 3.9.0 ou superior (para JARs Java)
- Versões do JDK, Scala e Databricks Connect que correspondam ao seu ambiente serverless (este exemplo usa JDK 17, Scala 2.13.16 e Databricks Connect 17.0.1)
o passo 1. Criar um JAR
- Scala
- Java
-
execute o seguinte comando para criar um novo projeto Scala :
Bashsbt new scala/scala-seed.g8Quando solicitado, insira um nome de projeto, por exemplo,
my-spark-app. -
Substitua o conteúdo do seu arquivo
build.sbtpelo seguinte: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" -
Edite ou crie um arquivo
project/assembly.sbte adicione esta linha:addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") -
Crie sua classe principal em
src/main/scala/example/DatabricksExample.scala:Scalapackage 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(" "))
}
} -
Para construir seu arquivo JAR , execute o seguinte comando:
Bashsbt assembly
-
execute o seguinte comando para criar uma nova estrutura de projeto Maven :
Bash# Create all directories at once
mkdir -p my-spark-app/src/main/java/com/examples
cd my-spark-app -
Crie um arquivo
pom.xmlna raiz do projeto com o seguinte conteúdo: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> -
Crie sua classe principal em
src/main/java/com/examples/SparkJar.java:Javapackage 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(" "))
);
}
} -
Para construir seu arquivo JAR , execute o seguinte comando:
Bashmvn clean packageO JAR compilado está localizado no diretório
target/comomy-spark-app-1.0-SNAPSHOT.jar.
o passo 2. Crie um Job para executar o JAR
-
Em seu site workspace, clique em
Jobs & pipeline na barra lateral.
-
Clique em Create e depois em Job .
A tarefa tab é exibida com o painel de tarefa vazio.
Se a interface de usuárioLakeFlow Jobs estiver ativada , clique no JAR para configurar a primeira tarefa. Se o bloco JAR não estiver disponível, clique em Add another task type (Adicionar outro tipo de tarefa ) e procure por JAR .
-
Opcionalmente, substitua o nome do trabalho, cujo padrão é
New Job <date-time>pelo seu nome de trabalho. -
Em nome da tarefa , digite um nome para a tarefa, por exemplo,
JAR_example. -
Se necessário, selecione JAR no menu suspenso Type (Tipo ).
-
Para a classe principal , insira o pacote e a classe do seu arquivo JAR. Se você seguiu o exemplo acima, digite
com.examples.SparkJar. -
Para computação , selecione sem servidor .
-
Configure o ambiente serverless :
- Escolha um ambiente e clique em
Edite para configurar.
- Selecione 4 -Scala-preview para a versão do ambiente .
- Adicione seu arquivo JAR arrastando e soltando-o no seletor de arquivos ou navegue até ele para selecioná-lo em um volume Unity Catalog ou em um local workspace .
- Escolha um ambiente e clique em
-
Em Parâmetros , neste exemplo, digite
["Hello", "World!"]. -
Clique em Criar tarefa .
o passo 3: execute o Job e view os detalhes de execução do Job
Clique em para executar o fluxo de trabalho. Para acessar view detalhes da execução, clique em view execution (visualizar execução ) na janela pop-up Triggered execution (execução acionada ) ou clique no link na coluna começar time (tempo ) para a execução no Job execution (execução de trabalho) view.
Quando a execução for concluída, a saída será exibida no painel Output (Saída ), incluindo os argumentos passados para a tarefa.
Próximas etapas
- Para saber mais sobre tarefas JAR , consulte TarefasJAR para Job.
- Para saber mais sobre como criar um JAR compatível, consulte Criar um JAR compatível com o Databricks.
- Para saber mais sobre como criar e executar o Job, consulte LakeFlow Jobs.