【问题标题】:Spark Dataframe comparison in Unit testing to check the Functionality单元测试中的 Spark Dataframe 比较以检查功能
【发布时间】:2021-11-08 16:03:30
【问题描述】:

我创建了一些方法,可以将数据帧转换为所需格式,过滤多个错误检查并根据错误规则更新数据帧。

我是在 intelliJ 上用 scala 编写单元测试的新手。 我必须编写单元测试来将实际数据帧与预期结果进行比较。

下面是我为数据框的枢轴功能编写的单元测试用例。类似的方式,我必须将获得的数据集与预期的数据帧进行比较。

 @Test
  def testPivotingDataFramePositive(): Unit = {

    val inputDf = spark.read.option("header",true).csv("src/test/resources/input-test-files/pivotInput.csv")
    val expectedResult = spark.read.option("header",true).csv("src/test/resources/output-test-files/pivotOutput.csv")
    val actualResult = parserObj.pivotingDataFrame(inputDf)
    assertEquals(expectedResult, actualResult)
}

即使两个数据帧相同(可能是因为数据帧记录每次都排序),上述测试用例也因抛出差异而失败。

即使尝试了下面的比较,即使数据帧相同,它也会因输出为 0 而失败。

assert (actualResult.except(expectedResult).count() != 0 && expectedResult.except(actualResult).count != 0)

如何在单元测试中有效地测试数据帧转换功能?

【问题讨论】:

    标签: scala dataframe unit-testing apache-spark apache-spark-sql


    【解决方案1】:

    最好使用库 "com.holdenkarau" %% "spark-testing-base" % "3.0.0_1.0.0" % "test" 而不是编写自己的函数来验证数据框。

    测试RDD、Dataframe和结构化Streaming非常高效。

    Github 网址: https://github.com/holdenk/spark-testing-base

      class test extends FunSuite with DataFrameSuiteBase {
      test("DataFrame test") {
        val sqlCtx = sqlContext
        import sqlCtx.implicits._
    
        val input1 = sc.parallelize(List[(Int, Double)]((1, 1.1), (2, 2.2), (3, 3.3))).toDF
        val input2 = sc.parallelize(List[(Int, Double)]((1, 1.2), (2, 2.3), (3, 3.4))).toDF
        assertDataFrameApproximateEquals(input1, input2, 0.11) // equal
    
        intercept[org.scalatest.exceptions.TestFailedException] {
          assertDataFrameApproximateEquals(input1, input2, 0.05) // not equal
        }
      }
    }
    

    这里是维基:https://github.com/holdenk/spark-testing-base/wiki

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2018-10-03
      • 2011-01-13
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      相关资源
      最近更新 更多