本次实验采用厦门大学林子雨教授团队开发的实验课程,在自己已安装的环境走了一遍,总体比较顺利,也遇到一些坑,记录一下,以免重入坑
学习网址:http://dblab.xmu.edu.cn/post/7499/ 大数据课程实验案例:网站用户行为分析(免费共享)
一、大数据案例-步骤一:本地数据集上传到数据仓库Hive
1.实验数据集的下载:
百度网盘下载 http://pan.baidu.com/s/1nuOSo7B
user.zip 172M 包含了一个大规模数据集raw_user.csv(包含2000万条记录),和一个小数据集small_user.csv(只包含30万条记录)
2.下载后用到的相关命令
mkdir bigdatacase
cd bigdatacase
mkdir dataset
unzip user.zip -d /root/bigdatacase/dataset
cd /root/bigdatacase/dataset
ls
head -5 raw_user.csv
head -5 small_user.csv
3.字段解析:
user_id(用户id)
item_id(商品id)
behaviour_type(包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)
user_geohash(用户地理位置哈希值,有些记录中没有这个字段值,所以后面我们会用脚本做数据预处理时把这个字段全部删除)
item_category(商品分类)
time(该记录产生时间)
----------------
数据集的预处理
1.删除文件第一行记录,即字段名称
cd /usr/local/bigdatacase/dataset
sed -i '1d' raw_user.csv //1d表示删除第1行,同理,3d表示删除第3行,nd表示删除第n行
sed -i '1d' small_user.csv
head -5 raw_user.csv
head -5 small_user.csv
2.对字段进行预处理
包括为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)。
pre_deal.sh
nano pre_deal.sh
----------------
#!/bin/bash
#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
outfile=$2
#注意!!最后的$infile > $outfile必须跟在}’这两个字符的后面
awk -F "," 'BEGIN{
srand();
id=0;
Province[0]="山东";Province[1]="山西";Province[2]="河南";Province[3]="河北";Province[4]="陕西";Province[5]="内蒙古";Province[6]="上海市";
Province[7]="北京市";Province[8]="重庆市";Province[9]="天津市";Province[10]="福建";Province[11]="广东";Province[12]="广西";Province[13]="云南";
Province[14]="浙江";Province[15]="贵州";Province[16]="新疆";Province[17]="西藏";Province[18]="江西";Province[19]="湖南";Province[20]="湖北";
Province[21]="黑龙江";Province[22]="吉林";Province[23]="辽宁"; Province[24]="江苏";Province[25]="甘肃";Province[26]="青海";Province[27]="四川";
Province[28]="安徽"; Province[29]="宁夏";Province[30]="海南";Province[31]="香港";Province[32]="澳门";Province[33]="台湾";
}
{
id=id+1;
value=int(rand()*34);
print id"\t"$1"\t"$2"\t"$3"\t"$5"\t"substr($6,1,10)"\t"Province[value]
}' $infile > $outfile
------------------
chmod +x pre_deal.sh
bash ./pre_deal.sh small_user.csv user_table.txt
[root@centos7 dataset]# head -10 user_table.txt
1 10001082 285259775 1 4076 2014-12-08 辽宁
2 10001082 4368907 1 5503 2014-12-12 甘肃
3 10001082 4368907 1 5503 2014-12-12 香港
4 10001082 53616768 &nb