Spark算子代码汇总
算子分类
Transformations转换算子延迟执行 需要Action算子触发才执行
Action行动算子,触发执行
控制算子 cache persist checkpoint
Transformations
延迟执行 需要Action算子触发才执行
map- 1:1 取数据数据是一行
flatMap-1:n 数据是多行拆分过的
filter-过滤
sortByKey-排序
sortBy-排序 按照v(Int)进行排序,默认正序排列
sample-随机抽样
//map 1:1 数据是一行
// lines.map(one=>{
// one+"#"
// }).foreach(println)
//flatMap 1:n 数据是多行拆分过的
// lines.flatMap(one=>{one.split(" ")}).foreach(println)
//过滤-filter
// val rdd1: RDD[String] = lines.flatMap(one=>{one.split(" ")})
// rdd1.filter(one=>{
// "book".equals(one)
// }).foreach(println)
//排序-ortByKey
// val words: RDD[String] = lines.flatMap(one=>{one.split(" ")})
// val pairWords: RDD[(String, Int)] = words.map(one=>{(one,1)})
// val reduceResult: RDD[(String, Int)] = pairWords.reduceByKey((v1:Int,v2:Int)=>{v1+v2})
// //按照k(String)进行v的逆序
// //从map中取出数据并翻转,此时是数据在前单词在后
// val teransRDD: RDD[(Int, String)] = reduceResult.map(tp=>{tp.swap})
// val result: RDD[(Int, String)] = teransRDD.sortByKey(false)
// //再次转换kv位置
// result.map(_.swap).foreach(println)
//排序-sortBy
//按照v(Int)进行排序,不写false,默认正序排列
// reduceResult.sortBy(tp=>{tp._2},false)foreach(println)
//随机抽样-sample
//(抽到所需数据后是继续,抽样占总数的比率,抽样的随机数据会固定)
// val result: RDD[String] = lines.sample(true,0.1,100L)
// result.foreach(println)
join
不相同的元素不打印
val nameRDD: RDD[(String, Int)] = sc.parallelize(List[(String,Int)](("zhangsan",18),("lisi",20),("wangwu",22),("maliu",24)))
val soreRDD: RDD[(String, Int)] = sc.parallelize(List[(String,Int)](("zhangsan",100),("lisi",200),("wangwu",300),("tianqi",400)))
//jion
val result: RDD[(String, (Int, Int))] = nameRDD.join(soreRDD)
result.foreach(println)
leftOuterJoin-偏左合并
leftOuterJoin 以左为主,左边的全都打印,没有的显示None
左边少,右边多的元素,不打印
遍历元素可以取元组下标
val result: RDD[(String, (Int, Option[Int]))] = nameRDD.leftOuterJoin(soreRDD)
result.foreach(one=>{
val name = one._1
val age = one._2._1
val sore = one._2._2.getOrElse("666")
println(s"name = $name, age=$age, sore = $sore")
})
rightOuterJoin-偏右合并
用法等同于leftOuterJoin
fullOuterJoin-全合并,None补空
左右两边都打印,没有的元素用None表示
val result: RDD[(String, (Option[Int], Option[Int]))] = nam