任务3.8.3 利用RDD统计每日新增用户

任务目标

统计给定用户访问历史数据中,每日的新增用户数量。

数据准备

  • 原始数据格式:每行包含两个字段,日期和用户名,以逗号分隔。

  • 示例数据:

    2024-05-01,mike
    2024-05-01,alice
    2024-05-01,brown
    ...
    

解决方案

  • 使用倒排索引法,将用户名映射到其首次访问的日期。
  • 统计每个日期的出现次数,即为该日期的新增用户数。

环境准备

  • 本地创建用户文件 users.txt 并上传至 HDFS。
  • 启动 Spark Shell 或创建 Spark 项目。

交互式实现步骤

  1. 启动 Spark Shell

    shell 复制代码
    spark-shell --master spark://master:7077
  2. 读取数据

    scala 复制代码
    val rdd1 = sc.textFile("hdfs://master:9000/newusers/input/users.txt")
  3. 倒排索引

    scala 复制代码
    val rdd2 = rdd1.map(line => line.split(",") match { case Array(date, user) => (user, date) })
  4. 按键分组

    scala 复制代码
    val rdd3 = rdd2.groupByKey()
  5. 最小日期映射

    scala 复制代码
    val rdd4 = rdd3.mapValues(dates => dates.min)
  6. 计数统计

    scala 复制代码
    val result = rdd4.countByKey()
  7. 排序输出

    scala 复制代码
    val keys = result.keys.toList.sorted
    keys.foreach(key => println(s"$key 新增用户数:$result(key)"))

Spark 项目实现步骤

  1. 创建 Maven 项目,配置 Scala 版本和 Spark 依赖。

  2. 添加 Scala SDK日志配置文件

  3. 创建 HDFS 配置文件,设置客户端访问权限。

  4. 编写 Scala 程序 CountNewUsers,实现上述逻辑。

  5. 运行程序,查看 HDFS 上的输出结果。

结果验证

  • 验证输出结果是否与期望统计结果一致。

  • 示例期望结果:

    2024-05-01 新增用户数:3
    2024-05-02 新增用户数:1
    2024-05-03 新增用户数:2
    

总结

本实战概述展示了如何使用 Apache Spark 的 RDD 来处理和分析用户访问数据,以统计每日的新增用户数。通过交互式实现和项目化实现两种方式,本概述提供了详细的步骤和代码示例,确保了任务的可操作性和可复现性。

相关推荐
lzhlizihang3 天前
【RDD算子的分类】RDD的转换算子和触发算子(行为算子)、以及各个算子的作用,对比sql中的关键字
spark·转换算子·rdd·rdd算子·触发算子
问道飞鱼1 个月前
弹性分布式数据集RDD详细说明
分布式·spark·rdd
howard20055 个月前
任务4.8.3 利用SparkSQL统计每日新增用户
spark sql·每日新增用户数
howard20055 个月前
利用映射算子打印菱形
java·scala·rdd·映射算子
howard20055 个月前
RDD实战:扁平映射算子 - flatMap()
rdd·扁平映射算子
howard20055 个月前
3.1 掌握RDD的创建
rdd
破坏神在行动6 个月前
Hadoop+Spark大数据技术(微课版)曾国荪、曹洁版 第六章 第6次作业 Spark简介与RDD编程
数据仓库·hadoop·spark·rdd·思维导图xmind
封奚泽优6 个月前
RDD编程初级实践
运维·服务器·spark·scala·rdd
阿年、嗯啊9 个月前
横扫Spark之 - RDD(Resilient Distributed Dataset)弹性分布式数据集
大数据·分布式·spark·rdd·rdd的5个主要特性