跟随王家林老师的零基础讲解,注重动手实战,成为spark高手,笑傲大数据之林!王家林老师是大数据技术集大成者,中国Spark第一人:DT大数据梦工厂新浪微博:www.weibo.com/ilovepains/微信公众号:DT_Spark博客:http://.blog.sina.com.cn/ilovepainsTEL:18610086859Email:18610086859@vip.126.comimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextobject TopNGroup { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("TopNGroup").setMaster("local") val sc = new SparkContext(conf) val lines = sc.textFile("F:\\tempFile\\TopNGroup.txt") //val pairs=lines.map(line=>(line.split(" ")(1)),line.split(" ")(2)) val pairs = lines.map(line => { val splited = line.split(" ") //返回的是数组, (splited(0), splited(1).toInt) }) //val grouped=pairs.groupBy(x=>x._1) val grouped = pairs.groupByKey() //到这一步,我们可以打印出来 分组后的key的值 这里的值 是 spark 和 hadoop //val xx=grouped.map(x=>x._1) //xx.foreach(println) //grouped.foreach(println) //肯定是要先 key排序 val grouped1 = grouped.map(x => ((x._1), (x._1, x._2))) val grouped2 = grouped1.sortByKey() val grouped3 = grouped2.map(x => (x._2)) val grouped4 = grouped3.map(x => { val str = x._1 val it = x._2.iterator //可迭代,和迭代器是不一样的哦 val arr = new Array[Int](5) //我们计算的是top5 所以我们留的是申请的是5个数据的数组 while (it.hasNext) { var flag1=true //var flag2=true val temp=it.next for (i <- 0="" to="" 4="" if="" flag1="" if="" arr="" i="" 0="" arr="" i="" temp="" flag1="false" else="" if="" temp="">arr(i)){ for(j<- i="" 1="" to="" 4="" reverse="" arr="" j="" arr="" j-1="" arr="" i="" temp="" flag1="false" str="" arr="" grouped4="" foreach="" x="">{println(x._1) x._2.foreach(println) }) sc.stop }}
TopNGroup
最新推荐文章于 2021-11-29 16:08:00 发布