一、提出任务
-
已知有以下用户访问历史数据,第一列为用户访问网站的日期,第二列为用户名:
-
现需要根据上述数据统计每日新增的用户数量,期望统计结果:
二、完成任务
-
预备工作:启动集群的HDFS与Spark
-
在HDFS上准备数据 - user.txt
-
(一)读取文件,得到RDD
- 执行命令:
val rdd1 = sc.textFile("hdfs://master:9000/input/user.txt")
-
(二)倒排,互换RDD中元组的元素顺序
- 执行语句
(三)倒排后的RDD按键分组
- 执行命令:
val rdd3 = rdd2.groupByKey()
(四)取分组后的日期集合最小值,计数为1
- 执行命令:
val rdd4 = rdd3.map(line => (line._2.min, 1))
(五)按键计数,得到每日新增用户数
- 执行命令:
val result = rdd4.countByKey()
- 执行命令:
result.keys.foreach(key => println(key + "," + result(key)))
- 在
net.qzj.rdd
包里创建Newuser
单例对象
运行程序,查看结果
- 在控制台查看
Newuser
输出结果