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

Databricks Connect for Scala のテスト

注記

この記事では、Databricks Runtime13.3LTLTS以降のDatabricks Connectについて説明します。

この記事では、Databricks Runtime 13.3 LTS 以降で Databricks Connect の ScalaTest を使用してテストを実行する方法について説明します。Databricks Connect for Scala をインストールするには、「 Databricks Connect for Scala のインストール」を参照してください。

ScalaTest は、リモートの Databricks ワークスペース内のクラスターへの接続を必要としないローカルコードで実行できます。たとえば、ScalaTest を使用して、ローカル メモリ内の DataFrame オブジェクトを受け入れて返す関数をテストできます。 ScalaTest の使用を開始し、ローカルで実行するには、ScalaTest ドキュメントの 「Getting started 」を参照してください。

たとえば、次のファイルsrc/main/scala/NYCTaxiFunctions.scalaSparkSession インスタンスを返す getSpark 関数と、samples カタログの nyctaxi スキーマの trips テーブルを表すDataFrameを返す getTaxis 関数が含まれているとします。

NYCTaxiFunctions.scala:

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")
}
}

また、これらの getSparkTO 関数と getTaxis 関数を呼び出す次のファイル src/main/scala/Main.scalaがあるとします。

Main.scala:

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:

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 ドキュメントの「 Test Scala applications 」を参照してください。