首页 > 代码库 > RDD 算子补充

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 算子补充