简体   繁体   English

如何使用 ZIO 库测试 Scala Spark UnitTest/DQ 检查?

[英]How to test Scala Spark UnitTest/DQ check using ZIO library?

I am new to Scala. I am trying to unit test ASSERTIONS for UT/DQ check for Scala Spark Dataframe using ZIO library.我是 Scala 的新手。我正在尝试使用 ZIO 库对 Scala Spark Dataframe 的 UT/DQ 检查的断言进行单元测试。 Can anyone help me out here if they have already worked on ZIO library before.如果他们之前已经在 ZIO 库上工作过,谁能帮我解决这个问题。

I would recommend spark-fast-tests for making assertions about Spark DataFrames in scala. ZIO-test isn't one of the frameworks that spark-fast-tests has documented support for, but you should still be able to utilise it.我建议使用spark-fast-tests对 scala 中的 Spark DataFrames 进行断言。ZIO-test 不是 spark-fast-tests 记录支持的框架之一,但您仍然应该能够使用它。

Example例子

If you have some transformation on a DataFrame that you need to test:如果您对需要测试的 DataFrame 进行一些转换:

import org.apache.spark.sql.functions.lit
import org.apache.spark.sql.DataFrame


object Transformations {
  def appendLiteral(incomingData: DataFrame): DataFrame =
    incomingData.withColumn("foo", lit("bar"))
}

A naive test, which doesn't leverage the wider ZIO effect ecosystem, might look like this:不利用更广泛的 ZIO 效果生态系统的简单测试可能如下所示:

import com.github.mrpowers.spark.fast.tests.DataFrameComparer
import org.apache.spark.sql.SparkSession
import zio.test._
import zio.test.Assertion._

object TransformationsSpec extends ZIOSpecDefault with DataFrameComparer {
  val spark: SparkSession = SparkSession.builder().config("spark.master", "local").getOrCreate()
  import spark.implicits._

  def spec = suite("TransformationSpec")(
    test("appendLiteral adds a column named 'foo' with value 'bar'") {
      val testInput: DataFrame = Seq("Hello", "hi", "howdy").toDF("greeting")
      val expected: DataFrame =  Seq(("Hello", "bar"), ("hi", "bar"), ("howdy", "bar")).toDF("greeting", "foo")

      val result = testInput.transform(Transformations.appendLiteral)

      assert(assertSmallDataFrameEquality(expected, result, ignoreNullable = true))(isUnit)
    }
  )
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM