Aller au contenu principal

Test de Databricks Connect pour Scala

remarque

Cet article couvre Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.

Cet article décrit comment exécuter des tests en utilisant ScalaTest avec Databricks Connect pour Databricks Runtime 13.3 LTS et versions ultérieures. Pour installer Databricks Connect pour Scala, consultez Installer Databricks Connect pour Scala.

Pour démarrer avec ScalaTest et l'exécuter localement, consultez la page start dans la documentation ScalaTest.

Par exemple, étant donné le fichier suivant src/main/scala/NYCTaxiFunctions.scala contenant une fonction getSpark qui renvoie une instance SparkSession et une fonction getTaxis qui renvoie un DataFrame représentant la table trips dans le schéma nyctaxi du catalogue samples :

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

Et étant donné le fichier suivant src/main/scala/Main.scala qui appelle ces fonctions getSpark et getTaxis :

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

Le fichier suivant src/test/scala/NYCTaxiFunctionsTest.scala teste si la fonction getSpark renvoie une instance SparkSession et si la fonction getTaxis renvoie une DataFrame qui contient au moins une ligne de données :

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

Pour exécuter ces tests, consultez le guide de quick start de ScalaTest ou la documentation de votre IDE. Par exemple, pour IntelliJ IDEA, consultez Tester les applications Scala dans la documentation d'IntelliJ IDEA.