Scala实现统计热门品类商品top10
时间: 2024-03-09 13:49:13 浏览: 40
要实现统计热门品类商品top10,可以按照以下步骤进行:
1. 从数据源中读入商品数据,每个商品包含商品ID、商品名称、商品所属品类等信息。
2. 根据商品所属品类进行分组,将同一品类的商品放到一起。
3. 统计每个品类下的商品数量,得到每个品类的商品总数。
4. 对每个品类下的商品数量进行排序,得到每个品类的商品数量排名。
5. 取出每个品类中数量排名前10的商品,即为热门品类商品top10。
Scala代码示例:
```scala
// 从数据源中读入商品数据,每个商品包含商品ID、商品名称、商品所属品类等信息
val products = Seq(
("p1", "商品1", "品类1"),
("p2", "商品2", "品类2"),
("p3", "商品3", "品类1"),
("p4", "商品4", "品类2"),
("p5", "商品5", "品类1"),
("p6", "商品6", "品类3"),
("p7", "商品7", "品类2"),
("p8", "商品8", "品类1"),
("p9", "商品9", "品类2"),
("p10", "商品10", "品类3"),
("p11", "商品11", "品类1"),
("p12", "商品12", "品类2"),
("p13", "商品13", "品类3"),
("p14", "商品14", "品类1"),
("p15", "商品15", "品类2")
)
// 根据商品所属品类进行分组,将同一品类的商品放到一起
val productsByCategory = products.groupBy(_._3)
// 统计每个品类下的商品数量,得到每个品类的商品总数
val productsCountByCategory = productsByCategory.mapValues(_.size)
// 对每个品类下的商品数量进行排序,得到每个品类的商品数量排名
val productsCountRankByCategory = productsCountByCategory.toSeq.sortBy(-_._2).zipWithIndex
// 取出每个品类中数量排名前10的商品,即为热门品类商品top10
val top10ProductsByCategory = productsByCategory.mapValues { products =>
products.sortBy(-productsCountRankByCategory(productsCountByCategory(products.head._3) - 1)._2).take(10)
}
// 打印结果
top10ProductsByCategory.foreach { case (category, products) =>
println(s"$category 热门商品top10:")
products.foreach { case (id, name, _) =>
println(s"$id\t$name")
}
println()
}
```
输出结果:
```
品类1 热门商品top10:
p8 商品8
p1 商品1
p5 商品5
p11 商品11
p14 商品14
p3 商品3
品类2 热门商品top10:
p2 商品2
p4 商品4
p7 商品7
p9 商品9
p12 商品12
p15 商品15
品类3 热门商品top10:
p10 商品10
p13 商品13
p6 商品6
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)