我是靠谱客的博主 感性翅膀,最近开发中收集的这篇文章主要介绍[大数据技术] 淘宝双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

在这里插入图片描述

$ 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数据分析与预测实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部