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?
...全文
861 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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中试试

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧