目录
3、将user_table.txt中的数据最终导入到数据仓库Hive中。
(4)查询2014年12月10日到2014年12月13日有多少人浏览了商品
(5)以月的第n天为统计单位,依次显示第n天网站卖出去的商品的个数
(6)给定时间(2014-12-12)和给定地点(江西),求当天发出到该地点的货物的数量。因 为省份随机,答案不确定。
(7)查询某一天(2014-12-12)在该网站购买商品超过5次的用户id 。
1、数据
raw_user.csv:完整用户数据,记录2000万左右(见网盘-实验步骤-综合案例1数据)
small_user.csv:子集,方便测试,记录30万条
我们用small_user.csv这个小数据集进行实验,这样可以节省时间。等所有流程都跑通以后,可以使用大数据集raw_user.csv去测试。
使用file_zilla上传数据,并修改文件权限:
chmod 755 /home/hadoop/data/small_user.csv

2、数据预处理
(1)删除首行数据
sed -i '1d' small_user.csv
(2)对字段进行预处理
建一个脚本文件pre_deal.sh,把这个脚本文件和数据集small_user.csv放在同一个目录下。
vim pre_deal.sh
文件内容:
#下面设置输入文件,把用户执行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
执行pre_deal.sh脚本文件,对small_user.csv进行数据预处理
./pre_deal.sh small_user.csv user_table.txt
3、将user_table.txt中的数据最终导入到数据仓库Hive中。
(1)将user_table.txt上传到hdfs的 /bigdatacase/dataset下
hdfs dfs -put /home/hadoop/bigdatacase/dataset/user_table.txt /bigdatacase/dataset
(2)在hive下建立一个新的数据库
create database zxzx;
(3)创建外部表,并将user_table.txt已经上传至hdfs的数据存进hive下
CREATE EXTERNAL TABLE zxzx_user(
id INT,
uid STRING,
item_id STRING,
behavior_type INT,
item_category STRING,
visit_date DATE,
province STRING)
ROW