【发布时间】:2015-04-20 03:39:59
【问题描述】:
我使用RDD[T] 的fitler 方法。当我使用spark-shell 执行时,我得到了task not serializable 异常。
trait MyBase extends Serializable
object Type1 extends MyBase
object Type2 extends MyBase
object TestShell {
def readline(line:String) = {
if (line.contains( "scroll" )) Type1 else Type2
}
def main(args:Array[String])(implicit sc:org.apache.spark.SparkContext) = {
val data = sc.textFile( "D:\\work\\myfile" )
val parsed = data map (readline)
parsed filter (_ == Type1) take 100 foreach println
}
}
但是,当我在本地模式下在程序中创建 SparkContext(或使用 spark 提交)时,它运行良好。
object MainDesktop {
val appName = "newApp"
val master = "local"
val conf = new SparkConf().setAppName(appName).setMaster(master)
implicit val sc = new SparkContext(conf)
def main(args:Array[String]):Unit = {
TestShell.main(args)(sc)
}
}
是 Spark Shell 的 bug 吗?
【问题讨论】:
-
我相信是的。这是对可能相同的事情的简化:stackoverflow.com/questions/29762964/…
标签: serialization apache-spark