チュートリアル: サーバレスコンピュートでScalaコードを実行
プレビュー
ScalaとJava Job はパブリック プレビュー段階にあります。 JAR タスクを使用して JAR をデプロイできます。まだ有効になっていない場合は、 「Databricks プレビューの管理」を参照してください。
このチュートリアルでは、サーバーレス コンピュートを使用してDatabricks Connect for Scalaを開始する方法の概要を提供します。 Unity カタログ対応のコンピュート (標準アクセス モードのクラシック コンピュートまたはサーバーレス コンピュート) と互換性のあるScala JARファイルを構築する手順を説明します。
サーバレス コンピュートにJARデプロイして実行するように完全に構成されたScalaプロジェクトを作成するには、宣言型オートメーション バンドルを使用できます。 宣言型自動化バンドルを使用してScala JARを構築する方法については、「宣言型自動化バンドルを使用して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 Development Kit (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依存関係として追加します
Scala JAR をビルドするための依存関係として Databricks Connect を追加します。詳細については、 Spark依存関係」を参照してください。
Scala プロジェクトのbuild.sbtビルド ファイルに、Databricks Connect への次の参照を追加します。
scalaVersion := "2.13.16"
libraryDependencies += "com.databricks" %% "databricks-connect" % "17.3.+"
// 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 では、アプリケーションとすべての依存ライブラリを 1 つの JAR ファイル ( über JAR または fat JAR とも呼ばれる) にパッケージ化することを推奨しています。あるいは、依存ライブラリをコンピュートスコープのライブラリまたはサーバレス環境にインストールすることもできます。 詳細については、 「アプリケーションの依存関係」を参照してください。
Spark への依存関係をすべて削除します。Spark APIs 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 タスクを使用するか、宣言型自動化バンドルを使用して JAR ファイルをデプロイします。
作成したJAR標準のコンピュートでもサポートされています。 ただし、標準コンピュートの場合、管理者はJARライブラリのMaven座標とパスをホワイトリストに追加する必要があります。 標準アクセス モード (以前の共有アクセス モード) でのコンピュートに関する許可リスト ライブラリと init スクリプトを参照してください。
Databricks では、個々の JAR ではなくボリューム全体を許可リストに追加することをお勧めします。