メインコンテンツまでスキップ

チュートリアル: サーバレスコンピュートで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を入力します。

Bash
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 セッションの使用」を参照してください。

Scala
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: コードを実行してビルドする

次に、コードを実行します。

Bash
sbt run

次に、次の行を含むproject/assembly.sbtファイルを作成し、プロジェクトをビルドします。

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")
Bash
sbt assembly

ステップ 7: JARデプロイする

次に、UI の JAR タスクを使用するか、宣言型自動化バンドルを使用して JAR ファイルをデプロイします。

注記

作成したJAR標準のコンピュートでもサポートされています。 ただし、標準コンピュートの場合、管理者はJARライブラリのMaven座標とパスをホワイトリストに追加する必要があります。 標準アクセス モード (以前の共有アクセス モード) でのコンピュートに関する許可リスト ライブラリと init スクリプトを参照してください。

Databricks では、個々の JAR ではなくボリューム全体を許可リストに追加することをお勧めします。