我正在使用Flatspec运行测试并继续遇到错误,因为我将一个函数传递给了map。我曾经遇到过这个问题几次,但只是通过使用匿名函数找到了解决方法。在这种情况下,这似乎不可能。有没有办法将函数传递给scalatest中的转换?
代码:
“test” should “fail” in {
val expected = sc.parallelize(Array(Array(“foo”, “bar”), Array(“bar”, “qux”)))
def validateFoos(firstWord: String): Boolean = {
if (firstWord == “foo”) true else false
}
val validated = expected.map(x => validateFoos(x(0)))
val trues = expected.map(row => true)
assert(None === RDDComparisons.compareWithOrder(validated, trues))
}
错误:
org.apache.spark.SparkException: Task not serializable
*这使用Holden Karau的Spark测试基地: https://github.com/holdenk/spark-testing-base
答案 0 :(得分:1)
"正常"处理这个问题的方法是将外部类别定义为可服用的,除了测试之外,这是一个不好的做法,因为你不想发送大量的数据。