【问题标题】:How to run a Spark-Scala unit test notebook in Databricks?如何在 Databricks 中运行 Spark-Scala 单元测试笔记本?
【发布时间】:2023-03-18 07:25:01
【问题描述】:

我正在尝试使用 scalatest.funsuite 为我的 Spark-Scala 笔记本编写单元测试代码,但带有 test() 的笔记本没有在数据块中执行。请告诉我如何运行它?

这是相同的示例测试代码。

import org.apache.spark.sql.{Row, SparkSession}
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.Assertions._
import org.apache.spark.eventhubs._
import com.fasterxml.uuid.Generators
import org.apache.spark.sql.functions._
import org.apache.spark.sql.{DataFrame, Row, SparkSession, Column}

class ImsLoyaltyTest extends AnyFunSuite {
  test ("Date Format Checker") {
    val sampleIpData = Seq(
      Row("india","hello","05-03-2021","14","50"),
      Row("india","hello","15-06-2021","14","50"),
      Row("india","hello","05/06/2021","6100","50"),
      Row("india","hello","05-31-2021","14","50")
    )
    
    val sampleIpSchema = new StructType()
      .add("a", StringType)
      .add("b", StringType)
      .add("c", StringType)
      .add("d", StringType)
      .add("e", StringType)
    
    val sampleIpDF = spark.createDataFrame(spark.sparkContext.parallelize(sampleIpData), sampleIpSchema)
    
    assert (sampleIpDF.collectAsList() == sampleIpDF.collectAsList())
    
  }
}

【问题讨论】:

    标签: scala apache-spark databricks azure-databricks scalatest


    【解决方案1】:

    您需要为该测试套件显式创建对象并执行它。 在 IDE 中,您依赖特定的运行器,但它在笔记本环境中不起作用。

    您可以使用创建对象(docs)的.execute函数:

    (new ImsLoyaltyTest).execute()
    

    但最好使用 ScalaTest shell (docs) 的 .run 方法 - 您可以控制颜色输出、运行多个测试等:

    import org.scalatest._
    
    nocolor.durations.stats.run(new ImsLoyaltyTest)
    

    【讨论】:

    • 感谢您的回复...我已经尝试了这两种方法,但现在它正在抛出错误AbstractMethodError: Method $line5e46612c7a4b4f0bb06179c2e65f20f147/$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$ImsLoyaltyTest.org$scalatest$Assertions$_setter_$assertionsHelper_$eq(Lorg/scalatest/Assertions$AssertionsHelper;)V is abstract ....我正在使用 scala 2.12 和 scalatest 3.3.0-SNAP3
    • 我已将 scalatest 版本从 3.3.0 更改为 3.0.5 并将 AnyFunSuite 更改为 FunSuite...它就像魔术一样工作...@Alex 再次感谢
    • Scalatest 通常是 databricks 运行时的一部分,因此您不需要显式安装它 - 只需检查 ls -ls /databricks/jars/*test*
    猜你喜欢
    • 2020-12-21
    • 2022-08-09
    • 2019-04-18
    • 2022-11-26
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多