Apache Spark 任务序列化

Apache Spark Task Serialization

这个方法给我一个任务序列化错误:

def singleItemPrediction(userid : Int, item : Int) = {

  val userAndItems = useritemrating.filter({x => x._1 == userid && x._2 != item})

  val userMean = userAndItems.aggregate(0.0)((accum, rating) => accum + rating._3, _+_) / userAndItems.count()

  userMean + userAndItems.aggregate(0.0)((accum, ui) => accum + avgDev(userid, item, ui._2), _+_) / userAndItems.count()

}

将底线(返回的内容)更改为:

avgDev(userid, item1, item2), _+_) / userAndItems.count()

不报错!

我不明白为什么,有什么区别?它与使用 aggregate 操作调用的 avgDev 方法有关,但我不确定为什么会发生这种情况。我一直遇到这些问题并不断解决它们,我想知道它们为什么会发生,这样我就可以停止犯同样的错误并一遍又一遍地经历这种修复代码的情况。

您可以通过以下方式启用序列化调试:

-Dsun.io.serialization.extendedDebugInfo=true