scala – RDD的foreachPartition方法中的意外行为
发布时间:2020-12-16 10:05:26 所属栏目:安全 来源:网络整理
导读:我通过spark- shell评估了以下 scala代码行: val a = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10))val b = a.coalesce(1)b.foreachPartition { p = p.map(_ + 1).foreach(println) p.map(_ * 2).foreach(println)} 输出如下: 234567891011 为什么第一张地
我通过spark-
shell评估了以下
scala代码行:
val a = sc.parallelize(Array(1,2,3,4,5,6,7,8,9,10)) val b = a.coalesce(1) b.foreachPartition { p => p.map(_ + 1).foreach(println) p.map(_ * 2).foreach(println) } 输出如下: 2 3 4 5 6 7 8 9 10 11 为什么第一张地图后分区p变空了? 解决方法
它对我来说并不奇怪,因为p是Iterator,当你用map浏览它时,它没有更多的值,并考虑到长度是大小的快捷方式,它实现如下:
def size: Int = { var result = 0 for (x <- self) result += 1 result } 你得到0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |