赞
踩
目录
数据来自CDNow网站的一份用户购买CD明细,本数据集共有 6 万条 左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为数据。
数据共分4个字段,样例如下:
00001 19970101 1 11.77
00002 19970112 1 12.00
00002 19970112 5 77.00
00003 19970102 2 20.76
00003 19970330 2 20.76
00003 19970402 2 19.54
user_id: 用户ID ,order_dt: 购买日期 ,order_products: 购买产品数 , order_amount: 购买金额
编写MapReduce程序实现数据清洗,将不完 整的数据过滤掉,输出数据以‘,’分割。
使用hive对清洗后的数据进行分析 通过对用户行为数据进行分析,计算用户消费趋势:
1.每月各用户的消费次数、购买产品数量、消费总额。
2.每月的消费总次数、购买产品总数量、消费总额、消费人数。 结合分析结果,给出消费趋势结论。
思路:在mapper中将不完整数据去除,并将数据以逗号分隔,在reducer中去除重复数据。
方法一、
使用for (String m : msgs)是java的一种循环遍历的方法,表示遍历列表msgs里面的每一个对象,而对象的类型是String, 对象名是msgs。如果遍历的对象非空,那么就添加到newmsgs字符串里,并以逗号分隔。
定义新的字符串newmsgs2,并将newmsgs以逗号分隔,赋值给msgs2。令newmsgs2等于msgs的第1列,取第1列数字(0,6),左闭右开,即将日期精确到月。
最后定义字符串newmsgs3, newmsgs3 = msgs2[0]+","+newmsgs2+","+msgs2[2]+","+msgs2[3];即第0,1,2列后加逗号,第三列后不加逗号。
- public class ShoppingMapper extends Mapper<LongWritable,Text, Text, NullWritable> {
- @Override
- protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
- //得到数据,字符串类型转换成java类型
- String data = value.toString();
- //用空格分割数据
- String[] msgs = data.split(" ");
- //定义new
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。