Tarea no serializable: java. io. NotSerializableException al llamar a la función fuera del cierre solo en clases no objetos


Obtener un comportamiento extraño al llamar a una función fuera de un cierre:

  • cuando la función está en un objeto todo está funcionando
  • cuando la función está en una clase get:

Tarea no serializable: java.io.NotSerializableException: prueba

El problema es que necesito mi código en una clase y no en un objeto. ¿Alguna idea de por qué está pasando esto? Es un objeto Scala serializado (por defecto?)?

Este es un ejemplo de código de trabajo:

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(_))
}

Esto es el ejemplo que no funciona :

object NOTworking extends App {
  new testing().doIT
}

//adding extends Serializable wont help
class 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
}

Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52