Testes para o Databricks Connect for Scala

Observação

Este artigo abrange Databricks Connect para Databricks Runtime 13.3 LTS e acima.

Este artigo descreve como executar testes usando o ScalaTest para Databricks Connect para Databricks Runtime 13.3 LTS e acima. Para obter mais informações sobre Databricks Connect, consulte Databricks Connect para Scala.

Esta informação pressupõe que o senhor já tenha instalado o Databricks Connect para Scala. Consulte Instalar o Databricks Connect para Scala.

O senhor pode executar o ScalaTest no código local que não precisa de uma conexão com um cluster em um Databricks workspace remoto. Por exemplo, o senhor pode usar o ScalaTest para testar suas funções que aceitam e retornam objetos DataFrame na memória local. Para começar a usar o ScalaTest e executá-lo localmente, consulte Como começar na documentação do ScalaTest.

Por exemplo, dado o seguinte arquivo src/main/scala/NYCTaxiFunctions.scala contendo uma função getSpark que retorna uma instância SparkSession e uma função getTaxis que retorna uma DataFrame representando a tabela trips no esquema nyctaxi do catálogo samples:

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

E dado o seguinte arquivo src/main/scala/Main.scala que chama essas funções getSpark e 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)
  }
}

O arquivo src/test/scala/NYCTaxiFunctionsTest.scala a seguir testa se a função getSpark retorna uma instância SparkSession e se a função getTaxis retorna um DataFrame que contém pelo menos uma linha de dados:

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

Para executar esses testes, consulte o início rápido do ScalaTest ou a documentação do seu IDE. Por exemplo, para o IntelliJ IDEA, consulte Testar aplicativos Scala na documentação do IntelliJ IDEA.