spark Core中RDD数值型算子

一、 数值型RDD算子之转换算子

1、 map算子

map算子是将RDD中的每一个元素通过map算子计算后得到一个新的结果,新的结果为一个新的RDD

object MapOperator {
   
  def main(args: Array[String]): Unit = {
   
    val conf = new SparkConf().setAppName("map").setMaster("local[2]")
    val sc = new SparkContext(conf)

    val rdd: RDD[Int] = sc.makeRDD(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0))
    val rdd1: RDD[Int] = rdd.map((a: Int) => {
   
      a * 3
    })
    rdd1.foreach(println(_))

    val rdd2: RDD[String] = sc.makeRDD(Array("hadoop", "spark", "flink", "hadoop"))
    val rdd3: RDD[(String, Int)] = rdd2.map((word: String) => {
   
      (word, 1)
    })
    rdd3.foreach(println(_))
    sc.stop()
  }
}

2、 mapPartitions算子

和map类似,区别在于mapPartitions是对每一个分区操作

object MapPartitionsOperator {
   
  def main(args: Array[String]): Unit = {
   
    val conf = new SparkConf().setAppName("mapPartitions").setMaster("local[2]")
    val sc = new SparkContext(conf)

    val rdd:RDD[Int] = sc.makeRDD(Array(1,2,3,4,5,6,7,8),4)
    val rdd1:RDD[Int] = rdd.mapPartitions((a:Iterator[Int]) =>{
   
      var listBuffer:ListBuffer[Int] = ListBuffer()
      for( num <- a ){
   
        println(s"处理了一个分区数据$num")
        listBuffer.append(num*3)
      }
      listBuffer.iterator
    })
    rdd1.foreach(println(_))
    sc.stop()
  }
}

3、 mapPartitionsWithIndex算子

和map类似,区别在于mapPartitionsWithIndex是对每一个分区操作并且带有索引

object MapPartitionsWithIndex {
   
  def main(args: Array[String]): Unit = {
   
    val conf = new SparkConf().setAppName("mapPartitionsWithIndex").setMaster("local[2]")
    val sc = new SparkContext(conf)
    val rdd:RDD[Int] = sc.makeRDD(Array(1,2,3,4,5,6,7,8),4)
    val rdd1:RDD[Int] = rdd.mapPartitionsWithIndex((index:Int,data:Iterator[Int])=>{
   
      val listBuffer:ListBuffer[Int] = ListBuffer()
      for(num <- data){
   
        println(s"正在处理$index 分区的数据$num")
        listBuffer.append(num *3)
      }
      listBuffer.iterator
    })
    rdd1.foreach(println(_))
    sc.stop()
  }
}

4、 flatMap压扁算子

原来的RDD一条数据经过flatMap算子操作返回一个集合数据,集合中的每一条数据都是新的RDD中的数据

object FlatMapOperator {
   
  def 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值