概述
1.本地数据集上传到数据仓库Hive
1.1 实验数据集
通过上面的命令,就进入到了data_format.zip文件所在的目录,并且可以看到有个data_format.zip文件。
$ cd /usr/local
$ ls
$ sudo mkdir dbtaobao
$ //下面给hadoop用户赋予针对dbtaobao目录的各种操作权限
$ sudo chown -R hadoop:hadoop ./dbtaobao
$ cd dbtaobao
$ //下面创建一个dataset目录,用于保存数据集
$ mkdir dataset
$ //下面就可以解压缩data_format.zip文件
$ cd ~ //表示进入hadoop用户的目录
$ cd Downloads
$ ls
$ unzip data_format.zip -d /usr/local/dbtaobao/dataset
$ cd /usr/local/dbtaobao/dataset
$ ls
$ head -5 user_log.csv
1.2 数据集的预处理
(1)删除文件的第一行记录,即字段名称
user_log.csv的第一行都是字段名称,我们在文件中的数据导入数据仓库Hive中时,不需要第一行字段名称,因此在做数据预处理时,删除第一行
$ //下面删除user_log.csv中的第1行
$ sed -i '1d' user_log.csv //1d表示删除第1行,同理,3d表示删除第3行,nd表示删除第n行
$ //下面再用head命令去查看文件的前5行记录,就看不到字段名称这一行了
$ head -5 user_log.csv
(2)获取数据集中双11的前100000条数据
由于数据集中交易数据太大,这里只截取数据集中在双11的前10000条交易数据作为小数据集small_user_log.csv
下面我们建立一个脚本文件完成上面截取任务,请把这个脚本文件放在dataset目录下和数据集user_log.csv:
$ vim predeal.sh
上面使用vim编辑器新建了一个predeal.sh脚本文件,请在这个脚本文件中加入下面代码:
#!/bin/bash
#下面设置输入文件,把用户执行predeal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行predeal.sh命令时提供的第二个参数作为输出文件名称
outfile=$2
#注意!!最后的$infile > $outfile必须跟在}’这两个字符的后面
awk -F "," 'BEGIN{
id=0;
}
{
if($6==11 && $7==11){
id=id+1;
print $1","$2","$3","$4","$5","$6","$7","$8","$9","$10","$11
if(id==10000){
exit
}
}
}' $infile > $outfile
下面就可以执行predeal.sh脚本文件,截取数据集中在双11的前10000条交易数据作为小数据集small_user_log.csv,命令如下:
$ chmod +x ./predeal.sh
$ ./predeal.sh ./user_log.csv ./small_user_log.csv
(3)导入数据库
下面要把small_user_log.csv中的数据最终导入到数据仓库Hive中。为了完成这个操作,我们会首先把这个文件上传到分布式文件系统HDFS中,然后,在Hive中创建两个个外部表,完成数据的导入。
现在,我们要把Linux本地文件系统中的user_log.csv上传到分布式文件系统HDFS中,存放在HDFS中的“/dbtaobao/dataset”目录下。
首先,请执行下面命令,在HDFS的根目录下面创建一个新的目录dbtaobao,并在这个目录下创建一个子目录dataset,如下:
因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,之后在hive中创建数据库。
这里我们要分别在数据库dbtaobao中创建一个外部表user_log,它包含字段(user_id,item_id,cat_id,merchant_id,brand_id,month,day,action,age_range,gender,province),请在hive命令提示符下输入如下命令:
2.Hive数据分析
2.1 操作Hive
2.2 简单查询分析
2.3 查询条数统计分析
2.4 关键字条件查询分析
2.5 根据用户行为分析
2.6 用户实时查询分析
3.将数据从Hive导入到MySQL
3.1 Hive预操作
(1)创建临时表inner_user_log和inner_user_info
create table dbtaobao.inner_user_log(user_id INT,item_id INT,cat_id INT,merchant_id INT,brand_id INT,month STRING,day STRING,action INT,age_range INT,gender INT,province STRING) COMMENT 'Welcome to XMU dblab! Now create inner table inner_user_log ' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
(2)将user_log表中的数据插入到inner_user_log
INSERT OVERWRITE TABLE dbtaobao.inner_user_log select * from dbtaobao.user_log;
执行下面命令查询上面的插入命令是否成功执行:
hive> select * from inner_user_log limit 10;
3.2 使用Sqoop将数据从Hive导入MySQL
(1)登录MySQL,创建数据库,查看数据库的编码
mysql –u root –p
mysql> show databases; #显示所有数据库
mysql> create database dbtaobao; #创建dbtaobao数据库
mysql> use dbtaobao; #使用数据库
mysql> show variables like "char%";
(2)创建表
mysql> CREATE TABLE `dbtaobao`.`user_log` (`user_id` varchar(20),`item_id` varchar(20),`cat_id` varchar(20),`merchant_id` varchar(20),`brand_id` varchar(20), `month` varchar(6),`day` varchar(6),`action` varchar(6),`age_range` varchar(6),`gender` varchar(6),`province` varchar(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3)导入数据
cd /usr/local/sqoop
bin/sqoop export --connect jdbc:mysql://localhost:3306/dbtaobao --username root --password hadoop--table user_log --export-dir '/user/hive/warehouse/dbtaobao.db/inner_user_log' --fields-terminated-by ',';
(4)查看数据
mysql -u root -p
mysql> use dbtaobao;
mysql> select * from user_log limit 10;
最后
以上就是感性翅膀为你收集整理的[大数据技术] 淘宝双11数据分析与预测实验的全部内容,希望文章能够帮你解决[大数据技术] 淘宝双11数据分析与预测实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复