大数据-Spark-关于Json数据格式的数据的处理与练习

上一篇:

大数据-MapReduce-关于Json数据格式的数据的处理与练习-CSDN博客

16.7 Json在Spark中的引用

依旧利用上篇的数据去获取每部电影的平均分

{"mid":1,"rate":6,"uid":"u001","ts":15632433243}
{"mid":1,"rate":4,"uid":"u002","ts":15632433263}
{"mid":1,"rate":5,"uid":"u003","ts":15632403263}
{"mid":1,"rate":3,"uid":"u004","ts":15632403963}
{"mid":1,"rate":4,"uid":"u004","ts":15632403963}
{"mid":2,"rate":5,"uid":"u001","ts":15632433243}
{"mid":2,"rate":4,"uid":"u002","ts":15632433263}
{"mid":2,"rate":5,"uid":"u003","ts":15632403263}
{"mid":2,"rate":3,"uid":"u005","ts":15632403963}
{"mid":2,"rate":7,"uid":"u005","ts":15632403963}
{"mid":2,"rate":6,"uid":"u005","ts":15632403963}
{"mid":3,"rate":2,"uid":"u001","ts":15632433243}
{"mid":3,"rate":1,"uid":"u002","ts":15632433263}
{"mid":3,"rate":3,"uid":"u005","ts":15632403963}
{"mid":3,"rate":8,"uid":"u005","ts":15632403963}
{"mid":3,"rate":7,"uid":"u005","ts":15632403963}

Spark代码

/**
 * Test02.scala
 *
 * Scala code for calculating the average rating of each movie.
 */

package com.doit.day0130

import com.doit.day0126.Movie
import com.alibaba.fastjson.JSON
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Test02 {
  def main(args: Array[String]): Unit = {
    // 创建SparkConf对象,并设置应用程序名称和运行模式
    val conf = new SparkConf()
      .setAppName("Starting...")
      .setMaster("local[*]")
    // 创建SparkContext对象,并传入SparkConf对象
    val sc = new SparkContext(conf)
    // 读取数据文件"movie.json",并将其转换为RDD
    val rdd1 = sc.textFile("data/movie.json")
    // 将RDD中的每一行转换为Movie对象,并形成新的RDD
    val rdd2: RDD[Movie] = rdd1.map(line => {
      // 使用JSON解析器将每一行转换为Movie对象
      val mv = JSON.parseObject(line, classOf[Movie])
      mv
    })
    // 对RDD进行分组操作,以电影ID作为分组依据
    val rdd3: RDD[(Int, Iterable[Movie])] = rdd2.groupBy(_.mid)
    // 计算每个电影的评分总和和数量,并计算平均评分
    val rdd4 = rdd3.map(tp => {
      // 获取电影ID
      val mid = tp._1
      // 计算评分总和
      val sum = tp._2.map(_.rate).sum
      // 计算电影数量
      val size = tp._2.size
      // 计算平均评分
      (mid, 1.0 * sum / size)
    })
    // 打印出每部电影的平均评分
    rdd4.foreach(println)
  }
}

相关推荐

  1. COCO数据json文件内容

    2024-02-03 18:02:02       65 阅读
  2. Spark数据处理璀璨明星

    2024-02-03 18:02:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 18:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 18:02:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 18:02:02       82 阅读
  4. Python语言-面向对象

    2024-02-03 18:02:02       91 阅读

热门阅读

  1. Ubuntu 关闭rsyslog,var/log/syslog文件过大解决

    2024-02-03 18:02:02       48 阅读
  2. 头歌C++之函数进阶练习题

    2024-02-03 18:02:02       52 阅读
  3. SQL--IFNULL()、NULLIF()、ISNULL()函数 简单明了的讲解

    2024-02-03 18:02:02       48 阅读
  4. Docker应用之SpringBoot项目启动(四)

    2024-02-03 18:02:02       57 阅读
  5. CSS transition的一些见解

    2024-02-03 18:02:02       48 阅读
  6. CentOS 6使用`ntp`服务进行时间同步

    2024-02-03 18:02:02       50 阅读
  7. 在C#中如何避免内存泄漏

    2024-02-03 18:02:02       53 阅读
  8. 计算机网络(第六版)复习提纲23

    2024-02-03 18:02:02       46 阅读
  9. 使用websocket建立长链接实现用户点对点即时通讯

    2024-02-03 18:02:02       42 阅读
  10. C#学习笔记_继承

    2024-02-03 18:02:02       47 阅读