九十二、Spark-SparkSQL(统计电影平均分Top10)

举报
托马斯-酷涛 发表于 2022/05/25 23:06:57 2022/05/25
【摘要】 对电影评分数据进行分析,使用SQL编程,获取电影平均分Top10,要求电影的评分次数大于200 数据展示  代码 package org.example.SQL import org.apache.log4j.{Level, Logger}import org.apache.spark.sql.{DataF...

对电影评分数据进行分析,使用SQL编程,获取电影平均分Top10,要求电影的评分次数大于200

数据展示

 代码


  
  1. package org.example.SQL
  2. import org.apache.log4j.{Level, Logger}
  3. import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
  4. //电影数据分析
  5. object sql_Movie {
  6. def main(args: Array[String]): Unit = {
  7. Logger.getLogger("org").setLevel(Level.ERROR)
  8. val spark: SparkSession = SparkSession.builder().appName("sparksql").master("local[*]")
  9. .config("spark.sql.shuffle.partitions", 4)
  10. .getOrCreate()
  11. import spark.implicits._
  12. val ds: Dataset[String] = spark.read.textFile("data/text/rating_100k.data")
  13. // ds.printSchema()
  14. // ds.show()
  15. val movies: DataFrame = ds.map(line => {
  16. val arr: Array[String] = line.split("\t")
  17. (arr(1), arr(2).toInt)
  18. }).toDF("movieid", "score")
  19. movies.printSchema()
  20. movies.show()
  21. //统计 评分次数>200的电影平均分Top10
  22. movies.createOrReplaceTempView("movie")
  23. var sql =
  24. """
  25. select movieid,count(*) as counts,avg(score) as avgs
  26. from movie
  27. group by movieid
  28. having counts >200
  29. order by avgs
  30. limit 10
  31. """.stripMargin
  32. spark.sql(sql).show()
  33. }
  34. }

数据打印


  
  1. +-------+-----+
  2. |movieid|score|
  3. +-------+-----+
  4. | 242| 3|
  5. | 302| 3|
  6. | 377| 1|
  7. | 51| 2|
  8. | 346| 1|
  9. | 474| 4|
  10. | 265| 2|
  11. | 465| 5|
  12. | 451| 3|
  13. | 86| 3|
  14. | 257| 2|
  15. | 1014| 5|
  16. | 222| 5|
  17. | 40| 3|
  18. | 29| 3|
  19. | 785| 3|
  20. | 387| 5|
  21. | 274| 2|
  22. | 1042| 4|
  23. | 1184| 2|
  24. +-------+-----+

结果输出


  
  1. +-------+------+------------------+
  2. |movieid|counts| avgs|
  3. +-------+------+------------------+
  4. | 678| 219| 2.808219178082192|
  5. | 235| 217| 2.847926267281106|
  6. | 323| 240| 2.933333333333333|
  7. | 289| 259|2.9806949806949805|
  8. | 546| 254| 3.031496062992126|
  9. | 322| 218|3.0871559633027523|
  10. | 245| 240|3.1083333333333334|
  11. | 748| 316|3.1234177215189876|
  12. | 597| 206| 3.150485436893204|
  13. | 294| 485| 3.156701030927835|
  14. +-------+------+------------------+

文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。

原文链接:tuomasi.blog.csdn.net/article/details/124021427

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。