当前位置:   article > 正文

[大数据技术] 淘宝双11数据分析与预测实验_淘宝双11数据分析与预测实验报告

淘宝双11数据分析与预测实验报告

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

$ head -5 user_log.csv
  • 1

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
(2)获取数据集中双11的前100000条数据
由于数据集中交易数据太大,这里只截取数据集中在双11的前10000条交易数据作为小数据集small_user_log.csv
下面我们建立一个脚本文件完成上面截取任务,请把这个脚本文件放在dataset目录下和数据集user_log.csv:

$ vim predeal.sh
  • 1

上面使用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述
下面就可以执行predeal.sh脚本文件,截取数据集中在双11的前10000条交易数据作为小数据集small_user_log.csv,命令如下:

$ chmod +x ./predeal.sh
$ ./predeal.sh ./user_log.csv ./small_user_log.csv
  • 1
  • 2

在这里插入图片描述
(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;
  • 1

(2)将user_log表中的数据插入到inner_user_log

INSERT OVERWRITE TABLE dbtaobao.inner_user_log select * from dbtaobao.user_log;
  • 1

执行下面命令查询上面的插入命令是否成功执行:

hive> select * from inner_user_log limit 10;
  • 1

在这里插入图片描述

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%";
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
(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;
  • 1

在这里插入图片描述
(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 ',';
  • 1
  • 2

(4)查看数据

mysql -u root -p
mysql> use dbtaobao;
mysql> select * from user_log limit 10;
  • 1
  • 2
  • 3

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/826579
推荐阅读
相关标签
  

闽ICP备14008679号