微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark实现二次排序

一.代码实现

 1 package big.data.analyse.scala.secondsort
 2 
 3 import org.apache.log4j.{Level, Logger}
 4 import org.apache.spark.sql.SparkSession
 5 
 6 /** 二次排序
 7   * Created by zhen on 2019/5/29.
 8   */
 9 class SecondSortByKey(val first:Int,val second:Int) extends Ordered[SecondSortByKey] with Serializable{
10   def compare(other : SecondSortByKey): Int ={
11     if(this.first - other.first != 0){//正序
12       this.first - other.first
13     }else{//倒序
14       other.second - this.second
15     }
16   }
17 }
18 object SecondSortByKey{
19   /**
20     * 设置日志级别
21     */
22   Logger.getLogger("org").setLevel(Level.WARN)
23   def main(args: Array[String]) {
24     val spark = SparkSession
25       .builder()
26       .appName("SecondSortByKey")
27       .master("local[2]")
28       .getorCreate()
29     val sc = spark.sparkContext
30     val rows = sc.textFile("src/big/data/analyse/scala/secondsort/sort.txt")
31 
32     val pairWithSortByKey = rows
33       .filter(row=>row.split(" ").length==3)//过滤错误的数据
34       .map(row=>{
35         val array = row.split(" ")
36         (new SecondSortByKey(array(0).toInt,array(1).toInt),row)
37     })
38     println("先正序后倒序")
39     pairWithSortByKey
40       .sortByKey(true) // 排序,true:先正序后倒序,false:先倒序后正序
41       .map(map => map._2)
42       .collect()
43       .foreach(println)
44     println("先倒序后正序")
45     pairWithSortByKey
46       .sortByKey(false) // 排序,true:先正序后倒序,false:先倒序后正序
47       .map(map => map._2)
48       .collect()
49       .foreach(println)
50 
51     sc.stop()
52   }
53 }

二.结果

先正序后倒序
1 9 ES
1 8 HBase
2 4 Tachyon日渐成熟
2 3 《黑豹》异军突起
2 3 Radis
3 3 HDFS
3 3 搜索引擎
5 3 spark发布2.4版本,性能提升巨大
5 2 《复仇者联盟3:无限战争》火热上映
6 3 Maven
7 2 Solr
先倒序后正序
7 2 Solr
6 3 Maven
5 2 《复仇者联盟3:无限战争》火热上映
5 3 spark发布2.4版本,性能提升巨大
3 3 HDFS
3 3 搜索引擎
2 3 《黑豹》异军突起
2 3 Radis
2 4 Tachyon日渐成熟
1 8 HBase
1 9 ES

Process finished with exit code 0

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐