spark简单算子练习

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

  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值