Partager via


Test de Databricks Connect pour Scala

Remarque

Cet article présente 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 pour Databricks Connect pour Databricks Runtime 13.3 LTS ou version ultérieure. Pour installer Databricks Connect pour Scala, consultez Installer Databricks Connect pour Scala.

Vous pouvez exécuter ScalaTest sur du code local qui n’a pas besoin d’une connexion à un cluster dans un espace de travail Azure Databricks distant. Par exemple, vous pouvez utiliser ScalaTest pour tester vos fonctions qui acceptent et retournent des objets DataFrame dans la mémoire locale. Pour bien démarrer avec ScalaTest et l’exécuter localement, consultez la section Bien démarrer dans la documentation ScalaTest.

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

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

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

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

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

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

Pour exécuter ces tests, consultez le guide de démarrage rapide ScalaTest ou la documentation de votre IDE. Par exemple, pour IntelliJ IDEA, consultez Applications Test Scala dans la documentation IntelliJ IDEA.