假定一个RDD 存在十个分区, 当对这个RDD进行groupby之后得到一个新的RDD,相同字段的数据是否 处于同一个分区?
我测试结果查看是相同分组字段的数据被划分到了相同分区, 并且同一个分区可以存在其他字段的数据。
延伸问题:
(1)如果说相同字段的数据处于同一分区那么 groupBy之后得到的groupByRDD.mapValues 获取到这个字段对应的所有的values数据,当数据量大的时候
groupByRdd.mapValues(_.tolist().sortby )就会产生内存溢出。
这个理解对吗
groupbykey才会处于同一分区吧。
理论上mapValues如果过大确实应该溢出,我但测试了一组超大的数据,没有溢出。
根据文档和日志猜测,当后续有行动操作,触发mapValues操作,mapvalues的rdd会序列化到磁盘上,所以估计不是一起读取到内存中,而是通过磁盘交换,读一点写一点。