Databricks Connect for Scala のテスト
注:
この記事では、Databricks Runtime 13.3 LTS 以降の Databricks Connect について説明します。
この記事では、Databricks Runtime 13.3 LTS 以降で ScalaTest for Databricks Connect を使用してテストを実行する方法について説明します。 Databricks Connectの詳細については、 Databricks Connect for Scalaを参照してください。
この情報は、Databricks Connect for Scala がすでにインストールされていることを前提としています。 「Databricks Connect for Scala のインストール」を参照してください。
リモート Databricks ワークスペース内のクラスターへの接続を必要としないローカル コードでScalaTestを実行できます。 たとえば、ScalaTest を使用して、ローカルメモリ内の DataFrame
オブジェクトを受け入れて返す関数をテストできます。 ScalaTest を使い始めてローカルで実行するには、ScalaTest ドキュメントの「はじめに」を参照してください。
たとえば、SparkSession
インスタンスを返す getSpark
関数と、samples
カタログのnyctaxi
スキーマ内のtrips
テーブルを表すDataFrame
を返す getTaxis
関数を含む次のファイル src/main/scala/NYCTaxiFunctions.scala
があるとします。
NYCTaxiFunctions.scala
:
package org.example.application
import com.databricks.connect.DatabricksSession
import org.apache.spark.sql.{DataFrame, SparkSession}
class NYCTaxiFunctions {
def getSpark: SparkSession = {
DatabricksSession.builder().getOrCreate()
}
def getTaxis: DataFrame = {
val spark = getSpark
spark.read.table("samples.nyctaxi.trips")
}
}
そして、これらのgetSpark
関数とgetTaxis
関数を呼び出す次のファイルsrc/main/scala/Main.scala
があるとします。
Main.scala
:
package org.example.application
object Main {
def main(args: Array[String]): Unit = {
val nycTaxiFunctions = new NYCTaxiFunctions()
val df = nycTaxiFunctions.getTaxis
df.show(5)
}
}
次のファイルはsrc/test/scala/NYCTaxiFunctionsTest.scala
getSpark
関数が SparkSession
インスタンスを返すかどうか、および getTaxis
関数が少なくとも 1 行のデータを含むDataFrame
を返すかどうかをテストします。
NYCTaxiFunctionsTest.scala
:
package org.example.application
import org.apache.spark.sql.SparkSession
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
class SparkSessionTypeTest extends AnyFlatSpec with Matchers {
"The session" should "be of type SparkSession" in {
val nycTaxiFunctions = new NYCTaxiFunctions()
val spark = nycTaxiFunctions.getSpark
spark shouldBe a [SparkSession]
}
}
class GetTaxisRowCountTest extends AnyFlatSpec with Matchers {
"The DataFrame" should "have at least one row" in {
val nycTaxiFunctions = new NYCTaxiFunctions()
val df = nycTaxiFunctions.getTaxis
df.count() should be > (0L)
}
}
これらのテストを実行するには、 ScalaTest クイック スタートまたは IDE のドキュメントを参照してください。 たとえば、IntelliJ IDEA の場合は、IntelliJ IDEA ドキュメントの「Scala アプリケーションのテスト」を参照してください。