rdd.collect()返回错误的值

Effpom 百度 研发  2017-12-03 03:32:18

val rightrdd=rightplan.execute()
rightrdd.saveAsTextFile("cd")
val result=rightrdd.collect()

rightplan是一个sparkplan,cd内为正确结果:

[0,1,2ef6513285,2ef6513287,2800000001,30]
[0,1,2ef6513286,2ef651328c,2800000001,31]
[0,1,2ef6513287,2ef651328f,2800000001,32]
[0,1,2ef6513288,2ef651328e,2800000001,33]
[0,1,2ef651328a,2ef651328e,2800000001,34]
[0,1,2ef651328c,2ef651328e,2800000001,35]

result得到错误结果:


why?
...全文
570 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Effpom 2017-12-04
引用 1 楼 amen000 的回复:
在spark shell中试试
问题已解决:

val rightrdd=rightplan.execute().map(iter=>iter.copy())
val result=rightrdd.collect()
这样即可,bug很奇怪,直接collect()取数据就是错的,但单个取行内数据是正常的,所以直接采用复制的方法转换数据,暂时没找到里面逻辑真正出问题的地方,有待研究。
  • 打赏
  • 举报
回复
amen000 2017-12-03
在spark shell中试试
  • 打赏
  • 举报
回复
相关推荐
发帖
Spark
加入

1135

社区成员

Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
申请成为版主
帖子事件
创建了帖子
2017-12-03 03:32
社区公告
暂无公告