【发布时间】:2016-06-05 22:32:21
【问题描述】:
只有一个NotSerializableException 我看不懂。使用 Spark 1.5.0 启动 EMR 集群,然后输入 shell spark-shell --master local(如果您选择 yarn-client 而不是 local,则没有区别)。
然后运行以下代码:
class MaybeSerializable() {
def add(i: Int) = i + 1
}
val foo = new MaybeSerializable()
sc.makeRDD(1 to 1000).map(foo.add).reduce(_ + _)
我向你保证这会导致org.apache.spark.SparkException: Task not serializable
现在使用相同版本的Spark"org.apache.spark" %% "spark-core" % "1.5.0"创建一个sbt项目,输入sbt console,然后运行
import org.apache.spark.SparkContext
val sc = new SparkContext("local", "shell")
class MaybeSerializable() {
def add(i: Int) = i + 1
}
val foo = new MaybeSerializable()
sc.makeRDD(1 to 1000).map(foo.add).reduce(_ + _)
我向你保证它会起作用的!也不例外!
如果有人能解释一下,我会很高兴的。
【问题讨论】:
标签: scala apache-spark sbt