Spark常用RDD算子总结

本文总结了Spark中常用的RDD算子,包括非Key-Value型的map、flatMap、mapPartitions、union、cartesian、groupBy、sortBy、sample和cache等,并介绍了Key-Value转换操作如join、groupByKey、reduceByKey和mapValues,是Spark学习者的实用参考。
摘要由CSDN通过智能技术生成

spark的算子比较多,但只有部分是常用的,特此记录下来,如需补充更多算子,请在评论留言。

常见RDD算子(非Key-Vaue型)
  • map
    map作用在RDD分区的每一个元素上
scala> val nums=sc.parallelize(List(1,2,3))
nums: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[64] at parallelize at <console>:24

scala> nums.collect()
res43: Array[Int] = Array(1, 2, 3)

scala> nums.map
   def map[U](f: Int => U)(implicit evidence$3: scala.reflect.ClassTag[U]): org.apache.spark.rdd.RDD[U]

scala> nums.map(x=>x+1).collect()
res45: Array[Int] = Array(2, 3, 4)
  • flatmap
    和map类似,但多了flat操作。其内部实现为,先对数据进行map操作,返回List或Seq,然后对返回的List(Seq)进行拍扁操作,形成一个大List。
scala> val ff=sc.parallelize(Array((1,2),(3,4),(5,6)))
ff: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[71] at parallelize at <console>:24

scala> ff.flatMap(x=>Seq(x._1)).collect()
res67: Array[Int] = Array(1, 3, 5)
  • mapPartitions
    操作对象为整个分区。通过获取分区的迭代器,在函数中通过这个分区整体的迭代器进行操作。
scala>  val a = sc.parallelize(1 to 10, 3)
a: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[99] at parallelize at <console>:24

scala> a.collect()
res84: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala>  def myfuncPerElement(e:Int):Int = {
     | 
     |            println("e="+e)
     | 
     |            e*2
     | 
     |       }
myfuncPerElement: (e: Int)Int

scala> def myfuncPerPartition ( iter : Iterator [Int] ) : Iterator [Int] = {
     | 
     |          pri
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值