spark之 map mapPartitions foreach foreachPartition

本文通过示例代码详细介绍了Apache Spark中map与mapPartitions的主要区别,前者按每条数据进行处理,而后者则按数据分区进行处理。同时对比了foreach与foreachPartition的不同之处。

spark代码中   map  和  mapPartitions  的区别和  foreach   与  foreachPartition  的区别类似  前者是一条数据一条数据处理,后者是一个分区一个分区数据处理

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by root on 2016/11/14.
  */
object t {

  def main(args: Array[String]): Unit = {
    val aa: SparkContext =   new SparkContext(new SparkConf().setAppName("t").setMaster("local"))
   val bb: RDD[Int] = aa.parallelize(1 to 10)
    bb.foreach(println(_))
    bb.foreachPartition(
      it =>     while (it.hasNext){
        println(it.next())
      }
    )

  val xx: RDD[Int] =  bb.mapPartitions{ x => {
       var result = List[Int]()
           var i = 0
            while(x.hasNext){
             i += x.next()
             }
            result.::(i).iterator
        }}

    xx.cache()
    xx.unpersist()
  xx.foreach(println(_))

  }
}

 

转载于:https://my.oschina.net/captainliu/blog/787740

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值