如何在 scalatest 期间将函数传递给 Spark 转换?
How do I pass functions into Spark transformations during scalatest?
我正在使用 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
"normal" 处理这个的方法是将外部 class 定义为可序列化的,这在除了测试之外的任何事情中都是不好的做法,因为你不想运送很多周围的数据。
我正在使用 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
"normal" 处理这个的方法是将外部 class 定义为可序列化的,这在除了测试之外的任何事情中都是不好的做法,因为你不想运送很多周围的数据。