任务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 来处理和分析用户访问数据,以统计每日的新增用户数。通过交互式实现和项目化实现两种方式,本概述提供了详细的步骤和代码示例,确保了任务的可操作性和可复现性。

相关推荐
howard20056 天前
RDD和DataFrame两种数据结构的对比
rdd·dataframe
xiaoping.huang1 个月前
Spark执行计划解析后是如何触发执行的?
大数据·spark·rdd
PersistJiao2 个月前
Spark RDD 的宽依赖和窄依赖
spark·rdd·宽窄依赖
PersistJiao2 个月前
Spark RDD(弹性分布式数据集)的深度理解
大数据·分布式·spark·rdd
PersistJiao2 个月前
Spark RDD Checkpoint 数据的保存机制
spark·checkpoint·rdd
PersistJiao2 个月前
Spark RDD 的 sortBy 和全局排序的理解差异
大数据·分布式·spark·rdd·sortby
PersistJiao2 个月前
Spark RDD 的 combineByKey、cogroup 和 compute 算子的作用
大数据·spark·rdd·底层算子
PersistJiao2 个月前
Spark RDD sortBy算子什么情况会触发shuffle
大数据·spark·rdd·shuffle·sortby
PersistJiao2 个月前
Spark RDD各种join算子从源码层分析实现方式
spark·rdd·算子·join
PersistJiao2 个月前
Spark RDD 的 compute 方法
大数据·spark·rdd·compute