重要
无服务器 Scala 和 Java 作业处于 Beta 阶段。 可以使用 JAR 任务来部署 JAR 文件。 如果尚未启用,请参阅管理 Azure Databricks 预览。
Java 存档 (JAR) 将 Java 或 Scala 代码打包到单个文件中。 本文介绍如何使用 Spark 代码创建 JAR,并将其部署为 无服务器计算上的 Lakeflow 作业。
小窍门
对于自动化部署和持续集成工作流,使用 Databricks Asset Bundles(资产捆绑包)利用带有预配置构建和部署设置的模板创建项目。 请参阅使用 Databricks Asset Bundles 构建 Scala JAR和将 JAR 文件上传到 Unity Catalog 的捆绑包。 本文描述了用于部署的手动方法,或通过使用无服务器计算环境来了解 JAR 的工作原理。
要求
本地开发环境必须具有以下条件:
- sbt 1.11.7 或更高版本(对于 Scala JAR)
- Maven 3.9.0 或更高版本(适用于 Java JAR)
- 与无服务器环境匹配的 JDK、Scala 和 Databricks Connect 版本(此示例使用 JDK 17、Scala 2.13.16 和 Databricks Connect 17.0.1)
步骤 1. 生成 JAR
Scala
运行以下命令以创建新的 Scala 项目:
sbt new scala/scala-seed.g8出现提示时,输入项目名称,例如
my-spark-app。将你的
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"编辑或创建
project/assembly.sbt文件,并添加以下行:addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")在
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(" ")) } }若要生成 JAR 文件,请运行以下命令:
sbt assembly
Java
运行以下命令以创建新的 Maven 项目结构:
# Create all directories at once mkdir -p my-spark-app/src/main/java/com/examples cd my-spark-app在项目根目录中创建一个
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>在
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(" ")) ); } }若要生成 JAR 文件,请运行以下命令:
mvn clean package编译的 JAR 位于
target/目录中,名为my-spark-app-1.0-SNAPSHOT.jar。
步骤 2. 创建用于运行 JAR 的作业
在工作区中,单击
,然后在边栏中选择作业和管道。
单击创建,然后选择作业。
“ 任务 ”选项卡显示空任务窗格。
注意
如果 Lakeflow 作业 UI 为 ON,请单击 JAR 磁贴以配置第一个任务。 如果 JAR 磁贴不可用,请单击“ 添加其他任务类型 ”并搜索 JAR。
(可选)将默认为
New Job <date-time>作业名称的作业名称替换为作业名称。在 任务名称中,输入任务的名称,例如
JAR_example。如有必要,请从“类型”下拉菜单中选择 JAR。
对于 Main 类,请输入 Jar 的包和类。 如果遵循上述示例,请输入
com.examples.SparkJar。对于 “计算”,请选择“ 无服务器”。
配置无服务器环境:
- 选择环境,然后单击
编辑 以对其进行配置。
- 为环境版本选择 4-scala-preview。
- 通过将 JAR 文件拖放到文件选择器,或浏览以从 Unity 目录卷或工作区位置选择它来添加 JAR 文件。
- 选择环境,然后单击
对于此示例,请输入 作为“参数”。
["Hello", "World!"]单击“创建任务”。
步骤 3:运行作业并查看作业运行详细信息
单击
以运行工作流。 若要查看运行详细信息,请在“已触发的运行”弹出窗口中单击“查看运行”,或者在作业运行视图中单击运行“开始时间”列中的链接。
运行完成后,输出会显示在“输出”面板中,其中包括传递给任务的参数。
后续步骤
- 若要了解有关 JAR 任务的详细信息,请参阅 作业的 JAR 任务。
- 若要详细了解如何创建兼容的 JAR,请参阅 创建 Azure Databricks 兼容的 JAR。
- 若要详细了解如何创建和运行作业,请参阅 Lakeflow 作业。