需求
某视频网站的常规指标,各种TopN指标:
- 统计视频观看数Top10
- 统计视频类别热度Top10
- 统计视频观看数Top20所属类别包含这Top20视频的个数
- 统计视频观看数Top50所关联视频的所属类别
- 统计每个类别中的视频评论数Top10(以Film为例)
- 统计每个类别中视频流量Top10(以Film为例)
- 统计上传视频最多的用户Top10以及他们上传的视频
- 统计每个类别视频观看数Top10
数据分析
提供到的两份数据:video.txt和user.txt
视频表
video id
视频唯一id
11位字符串
uploader
视频上传者
上传视频的用户名String
age
视频年龄
视频上传日期和2007年2月15日之间的整数天(Youtube的独特设定)
category
视频类别
上传视频指定的视频分类 数组
注意:
关于 类别People & Blogs 数组类型 [“People”,“Blogs”]
length
视频长度
整形数字标识的视频长度
viewsv
观看次数
视频被浏览的次数
rate
视频评分
满分5分
ratings
流量
视频的流量,整型数字
comments
评论数
一个视频的整数评论数
related ids
相关视频id
相关视频的id,最多20个 数组
用户表
uploader
上传者用户名
string
videos
上传视频数
int
friends
朋友数量
int
利用MapReduce清洗数据
user.txt不需要清洗即可使用
下面将对video.txt进行数据清洗
核心代码:
public class ETLMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
private Text mapKey = new Text();
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String str = value.toString();
String[] infos = str.split(