重要
无服务器计算上的用于 Scala 的 Databricks Connect 处于 Beta 阶段。
本教程概述了如何使用无服务器计算开始使用用于 Scala 的 Databricks Connect。 它详细讲解了如何构建启用了 Unity Catalog 的计算(在标准访问模式下的经典计算或无服务器计算)兼容的 Scala JAR 文件。
小窍门
若要创建完全配置为在无服务器计算中部署和运行 JAR 的 Scala 项目,可以使用 Databricks 资产捆绑包。 请参阅 使用 Databricks 资产捆绑包生成 Scala JAR。
要求
本地开发环境必须满足用于 Scala 的 Databricks Connect 的要求。 请参阅 Databricks Connect 使用情况要求,其中包括:
Java 开发工具包 (JDK)
sbt
为无服务器计算配置的 Databricks CLI:
databricks auth login --configure-serverless --host <workspace-url>
步骤 1:创建 Scala 项目
首先创建 Scala 项目。 出现提示时,输入项目名称,例如 my-spark-app。
sbt new scala/scala-seed.g8
步骤 2:更新 Scala 和 JDK 版本
在生成 JAR 之前,请确保用于编译代码的 Java 开发工具包(JDK)和 Scala 的版本受无服务器计算支持。 有关此要求的详细信息,请参阅 设置 JDK 和 Scala 版本。
有关兼容版本,请参阅 版本支持矩阵。
以下配置适用于 Scala 2.13 和 JDK 17,它与 Databricks Runtime 版本 17 和无服务器环境版本 4 的专用或标准访问计算兼容。
scalaVersion := "2.13.16"
javacOptions ++= Seq("-source", "17", "-target", "17")
scalacOptions ++= Seq("-release", "17")
步骤 3:将 Databricks Connect 添加为依赖项
将 Databricks Connect 添加为依赖项以生成 Scala JAR。 有关详细信息,请参阅 Spark 依赖项。
在 Scala 项目的 build.sbt 生成文件中,添加对 Databricks Connect 的以下引用。
scalaVersion := "2.13.16"
libraryDependencies += "com.databricks" %% "databricks-connect" % "17.0.+"
// To run with new JVM options, a fork is required, otherwise it uses the same options as the sbt process.
fork := true
javaOptions += "--add-opens=java.base/java.nio=ALL-UNNAMED"
步骤 4:添加其他依赖项
Databricks 建议将应用程序和所有依赖库打包到单个 JAR 文件中,也称为 über 或 fat JAR。 或者,可以将依赖库安装为计算作用域库,或在无服务器环境中安装。 有关详细信息,请参阅 应用程序依赖项。
重要
删除对 Spark 的任何依赖项。 Spark API 由 Databricks Connect 提供。 有关详细信息,请参阅 Spark 依赖项。
步骤 5:添加 Spark 代码
在src/main/scala/example/DatabricksExample.scala中创建主类。 有关在 Scala 代码中使用 Spark 会话的详细信息,请参阅 使用 Databricks Spark 会话。
package com.examples
import com.databricks.connect.DatabricksSession
import org.apache.spark.sql.{SparkSession}
object SparkJar {
def main(args: Array[String]): Unit = {
val spark: SparkSession = DatabricksSession.builder()
.validateSession(false)
.addCompiledArtifacts(SparkJar.getClass.getProtectionDomain.getCodeSource.getLocation.toURI)
.getOrCreate()
println(spark.version)
println(spark.range(10).limit(3).collect().mkString(" "))
}
}
步骤 6:运行并生成代码
接下来,运行代码:
sbt run
现在使用以下行创建 project/assembly.sbt 文件,然后生成项目:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")
sbt assembly
步骤 7:部署 JAR
现在,使用 UI 中的 JAR 任务或使用 Databricks 资产捆绑包部署 JAR 文件:
注释
你创建的 JAR 也在标准计算上受到支持。 但是,对于标准计算,管理员必须将 JAR 库的 Maven 坐标和路径添加到允许列表。 请参阅使用标准访问模式(原共享访问模式)的计算上的允许列表库和 init 脚本。
Databricks 建议将整个卷而不是单个 JAR 添加到允许列表。