Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark:序列化不能使用聚合_Java_Serialization_Apache Spark - Fatal编程技术网

Java Spark:序列化不能使用聚合

Java Spark:序列化不能使用聚合,java,serialization,apache-spark,Java,Serialization,Apache Spark,我有一个类(Java),我想在Spark(1.6)中使用它: 我想将其与Spark聚合一起使用,如下所示(Scala): 不知何故,这会引发“任务不可序列化”异常 但是,当我使用带有map和reduce的类时,一切都很好: val rdd2= interactionObjects.map( _ => new InteractionAggregation()) rdd2.reduce((a,b) => a.merge(b)) println(rdd2.count()) 您知道为什么错

我有一个类(Java),我想在Spark(1.6)中使用它:

我想将其与Spark聚合一起使用,如下所示(Scala):

不知何故,这会引发“任务不可序列化”异常

但是,当我使用带有map和reduce的类时,一切都很好:

val rdd2= interactionObjects.map( _ => new InteractionAggregation())
rdd2.reduce((a,b) => a.merge(b))
println(rdd2.count())
您知道为什么错误发生在aggregate上而不是map/reduce上吗


谢谢和问候

聚合类应实现可序列化。调用聚合时,驱动程序会将(new Aggregation())对象发送给所有工作者,这会导致序列化错误

这确实解决了这个问题。但是我认为在使用Kyro!时没有必要实现可序列化!?或者Spark在使用聚合时会退回到Java序列化吗?如果内存可用,Kryo只处理一些核心scala不可序列化的类,而不是所有的类。看见
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.registerKryoClasses(Array(classOf[Aggregation]))
rdd.aggregate(new InteractionAggregation)((agg, rec) => agg.add(rec), (a, b) => a.merge(b) )
val rdd2= interactionObjects.map( _ => new InteractionAggregation())
rdd2.reduce((a,b) => a.merge(b))
println(rdd2.count())