Skip to content

项目3 🎬MapReduce 项目三:统计电影网站用户影评数据 ​

1. 项目背景与目标 ​

类别描述
背景在大数据时代下,发展数字经济需兼顾保护用户隐私和深入探索大数据价值,以指导决策 。
意义电影的评分次数直观地反映了影片的受欢迎程度和公众关注度 。分析不同性别的观影偏好有助于提供针对性的电影推荐 。
技术选型选用 MapReduce 编程,以保证较高的处理效率和灵活性 。
主要任务* 统计所有电影的评分次数 。* 统计不同性别的用户对电影的评分(平均评分) 。

2. MapReduce 开发环境搭建 ​

本项目使用 IntelliJ IDEA 作为 MapReduce 的编程工具,因为它是一个常用的 Java 集成开发工具,且 Hadoop 框架基于 Java 开发 。

步骤概览

  1. 在 Windows 系统下安装 Java (JDK 8 Update 281) 。

  2. 配置 Windows 系统的 Java 环境变量(JAVA_HOME、Path、ClassPath)。

  3. 下载并安装 IntelliJ IDEA (Community Edition) 。

  4. 创建 MapReduce 工程(Maven Archetype,使用 JDK 1.8)。

  5. 配置 MapReduce 开发环境,将 Hadoop 安装包 /share/hadoop 目录下的全部 Jar 包导入到 IDEA 项目的 Libraries 或 Modules 中 。


3. MapReduce 基础知识与案例分析 ​

A. WordCount(词频统计)源码解析 ​

通过官方提供的 WordCount 示例,深入了解 MapReduce 的工作原理和执行流程 。

模块职责与流程
Driver 模块MapReduce 程序的入口,负责初始化设置,包括:初始化 Hadoop 配置、新建 Job 对象、设置 Mapper/Combiner/Reducer、设置输入/输出路径和提交任务等 。
Map 阶段将输入文件的每一行记录映射(Map)处理为若干组键值对 <键, 值> 。在词频统计中,键是单词,值是初始频次 。
Shuffle/Sort在 Map 输出和 Reduce 输入之间进行。先按键进行排序,然后将键相同的键值对汇集起来,并将值存入同一列表中 。
Reduce 阶段接收 Shuffle 后的数据,对列表中的值进行聚合计算,例如求和统计词频 。

B. 网站用户登录次数排序案例 ​

该案例解决了上一个项目(项目2)中结果仅按邮件地址排序的问题,实现了根据登录次数进行升序排序 。

模块实现逻辑
Mapper读取日志文件,将 键与值的位置进行交换。例如:<邮件地址, 登录次数> 转换为 <登录次数, 邮件地址> 。
Shuffle/Sort根据新的键(登录次数)进行排序 。
Reducer读取 Mapper 的输出键值对,再次 将键与值的位置进行交换,最终输出 <邮件地址, 登录次数>(此时已按登录次数排序)。

4. 项目实践:电影影评数据统计 ​

统计目标数据文件主要步骤关键技术点
所有电影评分次数movies.dat, ratings.dat1. 连接 movies.dat 和 ratings.dat 数据 。2. 计算所有电影的评分次数 。需要关注 MapReduce 中的表连接(reducejoin() 或 mapjoin())和数据倾斜问题 。
不同性别用户对电影的平均评分movies.dat, users.dat, ratings.dat1. 连接 movies.dat、users.dat 和 ratings.dat 数据 。2. 按性别和电影 ID 分组 。3. 计算每部电影的平均评分 。涉及三表连接(例如 MapjoinThreeTables ),并在 Reduce 阶段按需分组聚合 。

基于 Vite 强力驱动 | 纯静态轻量托管