【发布时间】:2023-03-08 21:03:01
【问题描述】:
我编写了一个方法来过滤掉 RDD 中的重复项,并决定为该方法编写一个单元测试。这是我的方法:
def filterDupes(salesWithDupes: RDD[((String, String), SalesData)]): RDD[((String, String), SalesData)] = {
salesWithDupes.map(salesWithDupes => ((salesWithDupes._2.saleType, salesWithDupes._2.saleDate), salesWithDupes))
.reduceByKey((a, _) => a)
.map(_._2)
}
由于这是我第一次在 Scala 中编写测试,我遇到了一些复杂的问题。我是否正确地将列表中的元素传递给过滤方法?
现在我不知道如何验证从该方法返回的结果。 我现在想出的唯一方法是将 RDD 的数据收集到一个列表中,然后检查它的大小。方法对吗?
这是我对测试逻辑的看法:
"Sales" should "be filtered" in {
Given("Sales RDD")
val rddWithDupes = sc.parallelize(Seq(
(("metric1", "metric2"), createSale("1", saleType = "Type1", saleDate = "2014-10-12")),
(("metric1", "metric2"), createSale("2", saleType = "Type1", saleDate = "2014-10-12")),
(("metric1", "metric2"), createSale("3", saleType = "Type3", saleDate = "2010-11-01"))
))
When("Sales RDD is filtered")
val filteredResult = SalesProcessor.filterDupes(rddWithDupes).collect.toList
Then("Sales are filtered")
filteredResult.size should be(2)
????
}
【问题讨论】:
标签: scala unit-testing apache-spark testing mapreduce