目录
本篇文章记录用户访问session分析-top10热门品类之使用Scala实现二次排序。
代码
scala.spark
SortKey.scala
package graduation.scala.spark /** * FileName: SortKey * Author: hadoop * Email: 3165845957@qq.com * Date: 19-3-23 下午8:29 * Description: * Scala实现品类的二次排序 */ class SortKey(val clickCount:Int, val orderCount:Int, val payCount:Int) extends Ordered[SortKey] with Serializable { def compare(that: SortKey): Int = { if (clickCount - that.clickCount != 0){ clickCount - that.clickCount } else if(orderCount - that.orderCount != 0){ orderCount - that.orderCount } else if (payCount - that.payCount != 0){ payCount - that.payCount } else{ 0 } } }
scala.test
SortKeyTest.scala
package graduation.scala.test import graduation.scala.spark.SortKey import org.apache.spark.{SparkConf, SparkContext} /** * FileName: SortKeyTest * Author: hadoop * Email: 3165845957@qq.com * Date: 19-3-23 下午8:35 * Description: * scala二次排序测试类 * */ object SortKeyTest { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("SortKeyTest") .setMaster("local") val sc = new SparkContext(conf) val arr = Array(Tuple2(new SortKey(10,30,23),"1"), Tuple2(new SortKey(34,30,20),"2"), Tuple2(new SortKey(10,33,23),"3") ) val rdd = sc.parallelize(arr,1) val sortedRDD = rdd.sortByKey(false) for (tuple <- sortedRDD.collect()){ println(tuple._2) } } }