RDD 算子补充
Posted 人生,唯有锻炼与读书不能辜负
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDD 算子补充相关的知识,希望对你有一定的参考价值。
一、RDD算子补充
1、mapPartitions
mapPartitions的输入函数作用于每个分区, 也就是把每个分区中的内容作为整体来处理。 (map是把每一行)
mapPartitions一次处理一个分区的所有数据,而map算子一次处理分区中的一条数据,所以mapPartitions处理数据的速度比map快,如果RDD分区的数据很庞大,用mapPartitions容易造成内存溢出,
如果RDD分区数据量小,从而提升速度的角度考虑,可以使用mapPartitions算子。
JAVA实现:
scala实现:
2、mapPartitionsWithIndex
mapPartitionsWithIndex方法与mapPartitions方法功能类似
不同的是mapPartitionsWithIndex还会对原始分区的索引进行 追踪, 这样就能知道分区所对应的元素 。 方法的参数为一个函数, 函数的输入为整型索引和迭代器。
JAVA实现:
scala实现:
补充:1、map:一次处理分区中的一条数据
mapPartitions:一次处理分区中的所有数据
mapPartitionsWithIndex:一次处理分区中的所有数据 ,并且返回分区的索引,索引从0开始
注意:如果RDD分区中的数据体量比较大,用mapPartitions或者mapPartitionsWithIndex进行计算,有可能出现内存溢出(OOM)
如果RDD分区数据体量比较小,此时为了提高数据
以上是关于RDD 算子补充的主要内容,如果未能解决你的问题,请参考以下文章