使用Spark RDD找出所有只打1分以下,且评论次数大于5次的用户,使用scala编程语言
时间: 2024-03-24 16:41:25 浏览: 22
可以使用以下代码实现:
```scala
val conf = new SparkConf().setAppName("Find Users").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("path/to/input/file")
// 读取每行数据并按照用户id分组,得到每个用户的评论次数和评分平均值
val userRatings = lines.map(line => {
val fields = line.split(",")
(fields(0), (fields(1).toDouble, 1))
}).reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))
.mapValues(x => x._1 / x._2)
// 过滤出评论次数大于5次且评分平均值小于1的用户
val filteredUsers = userRatings.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
.filter(x => x._2 < 1 && x._2 > 0 && x._2.isNaN == false && x._2.isInfinite == false && x._2.isNegInfinity == false && x._2.isPosInfinity == false)
// 输出结果
filteredUsers.collect().foreach(println)
```
这里使用了 `NaN` 和 `Infinite` 等函数来过滤掉异常值。注意,在使用这些函数时需要注意数据类型。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)