0
我使用Flatspec來運行一個測試,並保持打錯誤,因爲我將一個函數傳遞給map。我遇到過這個問題幾次,但只是通過使用匿名函數找到了解決方法。這在這種情況下似乎不可能。是否有一種將函數傳遞給scalatest轉換的方法?如何在Scalatest中將函數傳遞給Spark轉換?
代碼:
「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
*此使用霍頓卡勞的火花檢測基地: https://github.com/holdenk/spark-testing-base
更一般的方法是使用靜態函數(將它們放在伴隨對象中) – Holden