地图无法在scala中串行化?
发布时间:2020-12-16 19:03:50 所属栏目:安全 来源:网络整理
导读:我是 Scala的新人怎么来“map”功能不可序列化?如何使其可序列化?例如,如果我的代码如下所示: val data = sc.parallelize(List(1,4,3,5,2,5))def myfunc(iter: Iterator[Int]) : Iterator[Int] = { val lst = List(("a",1),("b",2),("c",3),("a",2)) var
我是
Scala的新人怎么来“map”功能不可序列化?如何使其可序列化?例如,如果我的代码如下所示:
val data = sc.parallelize(List(1,4,3,5,2,5)) def myfunc(iter: Iterator[Int]) : Iterator[Int] = { val lst = List(("a",1),("b",2),("c",3),("a",2)) var res = List[Int]() while (iter.hasNext) { val cur = iter.next val a = lst.groupBy(x => x._1).mapValues(_.size) //val b= a.map(x => x._2) res = res ::: List(cur) } res.iterator } data.mapPartitions(myfunc).collect 如果我取消注释行 val b= a.map(x => x._2) 代码返回一个异常: org.apache.spark.SparkException: Task not serializable Caused by: java.io.NotSerializableException: scala.collection.immutable.MapLike$$anon$2 Serialization stack: - object not serializable (class: scala.collection.immutable.MapLike$$anon$2,value: Map(1 -> 3)) - field (class: $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC,name: a,type: interface scala.collection.immutable.Map) 非常感谢你. 解决方法
这是众所周知的scala bug:
https://issues.scala-lang.org/browse/SI-7005 Map#mapValues是不可序列化的
我们在Spark应用程序中有这个问题,map(identity)解决了问题 rdd.groupBy(_.segment).mapValues(v => ...).map(identity) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |