spark groupby 之后相同字段 的数据 是处于同一个分区吗?

假定一个RDD 存在十个分区, 当对这个RDD进行groupby之后得到一个新的RDD,相同字段的数据是否 处于同一个分区?

我测试结果查看是相同分组字段的数据被划分到了相同分区, 并且同一个分区可以存在其他字段的数据。

延伸问题:
(1)如果说相同字段的数据处于同一分区那么 groupBy之后得到的groupByRDD.mapValues 获取到这个字段对应的所有的values数据,当数据量大的时候
groupByRdd.mapValues(_.tolist().sortby )就会产生内存溢出。
这个理解对吗

阅读 5.3k
1 个回答

groupbykey才会处于同一分区吧。
理论上mapValues如果过大确实应该溢出,我但测试了一组超大的数据,没有溢出。
根据文档和日志猜测,当后续有行动操作,触发mapValues操作,mapvalues的rdd会序列化到磁盘上,所以估计不是一起读取到内存中,而是通过磁盘交换,读一点写一点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进