package com.qf.gp1707.day06
import org.apache.spark.{SparkConf, SparkContext}
object SparkRDDTest {
def main(args: Array[String]): Unit = {
val conf=new SparkConf().setAppName("SparkRDDTest").setMaster("local[*]")
val sc=new SparkContext(conf)
//通过并行化生成RDD
val rdd1=sc.parallelize(List(5,6,4,7,3,8,2,9,1,10))
// 对RDD1中每个元素乘以2然后排序
// val res1=rdd1.map(_ * 2).sortBy(x=>x ,true)
// println(res1.collect().toBuffer)
// 过滤出大于等于10的元素
// val res2=res1.filter(_ > 10)
// println(res2.collect().toBuffer)
val rdd2=sc.parallelize(Array("a b c","d e f","h i j"))
// 将RDD中每一个元素切分在压平
// val res=rdd2.flatMap(_.split(' '))
// println(res.collect().toBuffer)
//复杂的
val rdd3=sc.parallelize(List(List("a b c","a b b"),List("e f g","a f g"),List("h i j","a a b")))
// 将RDD中每一个元素切分在压平
// val res=rdd3.flatMap(_.flatMap(_.split(' ')))
// println(res.collect().toBuffer)
val rdd4=sc.parallelize(List(5,6,4,3))
val rdd5=sc.parallelize((List(1,2,3,4)))
// 求并集
// val res=rdd4.union(rdd5)
// println(res.collect().toBuffer)
//// 求交集
// println(rdd4.intersection(rdd5).collect().toBuffer)
//// 去重
// println(res.distinct().collect().toBuffer)
val rdd6=sc.parallelize(List(("tom",1),("jerry",3),("kitty",2)))
val rdd7=sc.parallelize(List(("jerry",2),("tom",1),("shuke",2)))
// 求join
// println((rdd6 join rdd7).collect().toBuffer)
//
//// 求左连接和右连接
// val res1=rdd6.leftOuterJoin(rdd7)
// val res2=rdd6.rightOuterJoin(rdd7)
// println(res1.collect().toBuffer)
// println(res2.collect().toBuffer)
// 求并集
// val res=rdd6.union(rdd7)
// println(res.collect().toBuffer)
// 按key进行分组
// println(res.groupByKey().collect().toBuffer)
// 分别用groupByKey和ReduceByKey进行单词计数,注意GroupByKey和ReduceByKey的区别
// 区别参考:http://www.cnblogs.com/bonelee/p/7111395.html
// groupByKey
// println(res.groupByKey().mapValues(_.sum).collect().toBuffer)
// reduceByKey
// println(res.reduceByKey(_ + _).collect().toBuffer)
// val rdd8=sc.parallelize(List(("tom",1),("tom",2),("jerry",3),("kitty",2)))
// val rdd9=sc.parallelize(List(("jerry",2),("tom",1),("shuke",2)))
//// 注意cogroup和ReduceByKey的区别
// println(rdd8.cogroup(rdd9).collect().toBuffer)
val rdd10=sc.parallelize(List(1,2,3,4,5))
// println(rdd10.reduce(_ + _))
val rdd11=sc.parallelize(List(("tom",1),("jerry",3),("kitty",2),("shuke",1)))
val rdd12=sc.parallelize(List(("jerry",2),("tom",3),("shuke",2),("kitty",5)))
val rdd13=rdd11 union rdd12
// 按照key进行聚合
// 按照value进行降序
// val res=rdd13.reduceByKey(_+_).map(t => (t._2,t._1)).sortByKey(false).map(t => (t._2,t._1))
// println(rdd13.reduceByKey(_+_).collect().toBuffer)
// println(rdd13.reduceByKey(_+_).map(t => (t._2,t._1)).collect().toBuffer)
// println(rdd13.reduceByKey(_+_).map(t => (t._2,t._1)).sortByKey(false).collect().toBuffer)
// println(res.collect().toBuffer)
// 笛卡尔积
println(rdd11.cartesian(rdd12).collect().toBuffer)
// 其他算子 count top take first takeOrdered
}
}
spark简单算子练习
猜你喜欢
转载自blog.csdn.net/weixin_40903057/article/details/88422480
今日推荐
周排行