RDD算子

本文详细介绍了Spark中的RDD算子,包括value RDD和key-value RDD的操作,如map、mapPartitions、flatMap、filter、groupBy、distinct、coalesce、repartition、sortBy、union、subtract、intersection、partitionBy、groupByKey和reduceByKey等。每个算子都有具体的案例展示其功能和用法,帮助理解Spark数据处理的过程和效率考虑。
摘要由CSDN通过智能技术生成

RDD算子

RDD本身分为数值(value RDD)、双Value(value-value) 以及键值对(key-value) 

value RDD

map

返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成(针对于结构变化)

案例:给定一个RDD集合,将集合中所有元素*2

val listRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5))

案例实现

//val mapRDD: RDD[Int] = listRDD.map(x => x*2) 
val mapRDD: RDD[Int] = listRDD.map(_ * 2) 
mapRDD.collect().foreach(println)

mapPartitions

mapPartitions是针对每个分区取进行计算,运算的效率要高于map;但是有可能出现内存溢出的情景

案例实现:

val mapPartRDD: RDD[Int] = listRDD.mapPartitions(data => {
         
		data.map(_ * 2)
    })    
    mapPartRDD.collect().foreach(println)

mapPartitionsWithIndex

映射同时可以获取分区号

案例:将集合中的元素和分区号结合元组

val listRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5))

案例实现

val mapPartIndexRDD: RDD[(String, Int)] = listRDD.mapPartitionsWithIndex((index, data) =>data.map(("分区号" + index, _))) mapPartIndexRDD.collect().foreach(println)

flatMap

flatMap的操作时将函数应用于RDD之中的每一个元素,将返回的迭代器中所有元素构成新的RDD

案例:将集合List(List(1,2,3),List(14,5,6))中的数据放入到一个list之中

val listRDD: RDD[List[Int]] = sc.makeRDD(List(List(1,2,3),List(14,5,6)))

案例实现:

val flatRDD: RDD[Int] = listRDD.flatMap(data => data) flatRDD.collect().foreach(println)

glom

将每个分区的数据单独形成一个数组

案例实现

val listRDD: RDD[Int] = sc.makeRDD(List(1,2,3,4,5,6,7,8,9
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值