共用方式為


教學課程:在無伺服器運算上執行 Scala 程式碼

這很重要

適用於無伺服器計算上的 Scala 的 Databricks Connect 處於 Beta 階段

本教學課程提供如何使用無伺服器計算開始使用 Databricks Connect for Scala 的概觀。 它將逐步解說如何建置啟用 Unity Catalog 的計算資源(包括標準存取模式下的傳統計算資源或無伺服器計算資源)所需的相容 Scala JAR 檔案。

小提示

若要建立完全設定為在無伺服器計算上部署和執行 JAR 的 Scala 專案,您可以使用 Databricks 資產套件組合。 請參閱 使用 Databricks 資產套件組合建置 Scala JAR

需求

您的本機開發環境必須符合 Databricks Connect for Scala 的需求。 請參閱 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 版本支援無伺服器運算。 關於此要求的詳細資訊,請參閱 Set 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 檔案,也稱為 überfat JAR。 或者,您可以將相依程式庫安裝為 運算範圍的程式庫,或在無伺服器環境中安裝。 欲了解更多資訊,請參閱 應用程式相依性

這很重要

移除對 Spark 的任何相依性。 Spark API 是由 Databricks Connect 所提供。 如需詳細資訊,請參閱 Spark 相依性

步驟 5:新增 Spark 程式碼

src/main/scala/example/DatabricksExample.scala建立您的主類別。 關於如何在 Scala 程式碼中使用 Spark 會話的詳細資訊,請參見 Use the Databricks Spark session

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 座標和路徑新增至允許清單。 請參閱 使用標準存取模式計算的 Allowlist 連結庫和 init 命令稿(先前稱為共用存取模式)

Databricks 建議將整個磁碟區,而不是個別 JAR 新增至允許清單。