相关疑难解决方法(0)

任务不可序列化:java.io.NotSerializableException仅在类而不是对象上调用闭包外的函数时

在闭包之外调用函数时会出现奇怪的行为:

  • 当函数在一个对象中时,一切正常
  • 当函数在类中时获取:

任务不可序列化:java.io.NotSerializableException:testing

问题是我需要在类中的代码而不是对象.知道为什么会这样吗?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(_))
}
Run Code Online (Sandbox Code Playgroud)

这是一个非工作的例子:

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) …
Run Code Online (Sandbox Code Playgroud)

serialization scala typesafe apache-spark

211
推荐指数
6
解决办法
15万
查看次数

Spark:从RDD检索大数据到本地计算机的最佳实践

我在纱线集群中有大RDD(1gb).在使用此群集的本地计算机上,我只有512 MB.我想在本地机器上迭代RDD中的值.我不能使用collect(),因为它会在本地创建太大的数组,这比我的堆更多.我需要一些迭代的方式.有方法iterator(),但它需要一些额外的信息,我无法提供.

UDP:提交给LocalIterator方法

apache-spark

39
推荐指数
3
解决办法
4万
查看次数

标签 统计

apache-spark ×2

scala ×1

serialization ×1

typesafe ×1