0


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

对电影评分数据进行分析,使用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. +-------+------+------------------+

标签: spark hadoop 运维

本文转载自: https://blog.csdn.net/m0_54925305/article/details/124021427
版权归原作者 托马斯-酷涛 所有, 如有侵权,请联系我们删除。

“九十二、Spark-SparkSQL(统计电影平均分Top10)”的评论:

还没有评论