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 算子补充的主要内容,如果未能解决你的问题,请参考以下文章

Spark之RDD算子-转换算子

RDD 算子分类

SparkStreaming整合kafka的补充

Spark算子

RDD算子RDD依赖关系

Spark RDD算子实战