用spark实现统计热销榜Top 10代码,说明:如果点击量一样,看加购量(二次排序),加购量一样,再看购买量(三次排序)
时间: 2023-06-01 09:06:14 浏览: 85
基于Scala和Java的Spark Streaming二次封装开源框架设计源码
下面是用Spark实现统计热销榜Top 10的代码:
```scala
import org.apache.spark.{SparkConf, SparkContext}
object HotSaleTop10 {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("HotSaleTop10")
val sc = new SparkContext(conf)
// 读取输入数据
val data = sc.textFile(args(0))
// 统计点击量、加购量、购买量
val counts = data.map(line => {
val fields = line.split(",")
val clickCount = fields(2).toInt
val addCartCount = fields(3).toInt
val buyCount = fields(4).toInt
(fields(0), clickCount, addCartCount, buyCount)
}).reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2, x._3 + y._3))
// 二次排序
val sortedCounts = counts.mapValues(x => (x._1, x._2, x._3, x._2 * 1000 + x._3)).sortBy(_._2._4, false)
// 取前10条数据
val top10 = sortedCounts.take(10)
// 输出结果
top10.foreach(x => println(x._1 + "\t" + x._2._1 + "\t" + x._2._2 + "\t" + x._2._3))
}
}
```
以上代码是基于Scala的Spark编写的,它首先读取输入数据,然后统计每个商品的点击量、加购量和购买量,接着进行二次排序,最后取出前10个商品输出结果。如果点击量一样,按照加购量排序,加购量一样,按照购买量排序。
阅读全文