不可序列化的任务:java.io.NotSerializableException仅在类

不可序列化的任务:java.io.NotSerializableException仅在类

在调用闭包之外的函数时,会产生奇怪的行为:

  • 当函数在对象中时,一切都在工作。
  • 当函数在类中时,获取:

不可序列化的任务:java.io.NotSerializableException:测试

问题是,我需要类中的代码,而不是对象。知道为什么会这样吗?Scala对象是序列化的(默认吗?)

这是一个工作代码示例:

object working extends App {
    val list = List(1,2,3)

    val rddList = Spark.ctx.parallelize(list)
    //calling function outside closure 
    val after = rddList.map(someFunc(_))

    def someFunc(a:Int)  = a+1

    after.collect().map(println(_))}

这是一个不起作用的例子:

object NOTworking extends App {
  new testing().doIT}//adding extends Serializable wont helpclass testing {  
  val list = List(1,2,3)  
  val rddList = Spark.ctx.parallelize(list)

  def doIT =  {
    //again calling the fucntion someFunc 
    val after = rddList.map(someFunc(_))
    //this will crash (spark lazy)
    after.collect().map(println(_))
  }

  def someFunc(a:Int) = a+1}


红糖糍粑
浏览 1073回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP