Hive数据分析实验报告

Hive数据分析实验报告

实验要求

1 完成本地数据user_log文件上传至HDFS中

2 完成HDFS文件上传至Hive中

用户行为日志user_log.csv,日志中的字段定义如下:

  1. user_id | 买家id
  2. item_id | 商品id
  3. cat_id | 商品类别id
  4. merchant_id | 卖家id
  5. brand_id | 品牌id
  6. month | 交易时间:月
  7. day | 交易事件:日
  8. action | 行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品
  9. age_range | 买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄>=50,0和NULL则表示未知
  10. gender | 性别:0表示女性,1表示男性,2和NULL表示未知
  11. province| 收货地址省份

3 Hive操作

(1)查看user_log表数据结构

(2)查看user_log表简单数据结构

(3)查看日志前10个交易日志的商品品牌

(4)查询前20个交易日志中购买商品时的时间和商品的种类

(5)用聚合函数count()计算出表内有多少条行数据

(6)在函数内部加上distinct,查出user_id不重复的数据有多少条

(7)排除顾客刷单(查询不重复的数据)

(8)查询双11当天有多少人购买了商品

(9)品牌2661,当天购买此品牌商品的数量

(10)查询多少用户当天点击了2661品牌的该店

(11)查询双十一当天男女购买商品比例

(12)查询某一天在该网站购买商品超过5次的用户id

(13)创建姓名缩写表 其中字段大于4条,并使查询插入,最后显示姓名缩写表格数据

IP地址规划表

image-20220704152904826

实验步骤

1 数据集预处理

  • 安装unzip
yum install unzip
  • 创建数据存放文件夹
mkdir /usr/local/dbtaobao/dataset
  • 解压数据集zip包
cp -r /mnt/hgfs/data_format.zip /usr/local/dbtaobao/dataset/
cd /usr/local/dbtaobao/dataset/
unzip data_format.zip
image-20220704142728468
  • 查看user_log.csv前5行数据
head -5 user_log.csv
image-20220704143021048
  • 删除第一行
sed -i '1d' user_log.csv
image-20220704143830612
  • 提取10000条user_log中日期为11月11日的数据,并存放于small_user_log中

    • 创建脚本predeal.sh
infile=$1
outfile=$2
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","$12
                        if(id==10000){
                            exit
                        }
                    }
                }'  $infile > $outfile
    • 为predeal.h提权
chmod +x ./predeal.sh
image-20220704144800028
    • 运行脚本predeal.sh,查看输出
./predeal ./user_log.csv ./small_user_log.csv
image-20220704152313808

2 数据集上传HDFS

  • 在hdfs中创建存放user_log的文件夹
start-all.sh
hdfs dfs -mkdir -p /dbtaobao/dataset/user_log
  • 向hdfs推送small_user_log.csv
hdfs dfs -put /usr/local/dbtaobao/dataset/small_user_log.csv /dbtaobao/dataset/user_log

image-20220704145448292

image-20220704145532079
  • 查看上传成功的数据文件前10行
hdfs dfs -cat /dbtaobao/dataset/user_log/small_user_log.csv | head -10
image-20220704152513222

3 从HDFS中导出数据集至HIVE数据库

  • 创建HIVE数据库dbtaobao
create database dbtaobao;
image-20220704150014475
  • 创建user_log表
create external table dbtaobao.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 Alex dblab, now create dbtaobao.user_log!' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile location '/dbtaobao/dataset/user_log';
image-20220704151444597
  • 查看表user_log前十行数据
use dbtaobao;
select * from user_log limit 10;

image-20220704152712542

4 Hive操作

(1)查看user_log表数据结构
show create table user_log;
image-20220704154234076
(2)查看user_log表简单数据结构
desc user_log;
image-20220704153840498
(3)查看日志前10个交易日志的商品品牌
select brand_id from user_log limit 10;
image-20220704154511119
(4)查询前20个交易日志中购买商品时的时间商品的种类
select month,day,brand_id from user_log limit 20;
image-20220704154810277
(5)用聚合函数count()计算出表内有多少条行数据
select count(*) from user_log;

image-20220704155621448

Result : 10000

(6)在函数内部加上distinct,查出user_id不重复的数据有多少条
select count(distinct user_id) from user_log;

image-20220704155923357

Result : 358

(7)排除顾客刷单(查询不重复的数据
select count(distinct user_id,item_id,cat_id,merchant_id,brand_id,month,day,action,age_range,gender,province) from user_log;

image-20220704161851174

Result : 9944

(8)查询双11当天有多少人购买了商品
select count(distinct user_id) from user_log where action='2';

image-20220704162359472

Result : 358

(9)品牌2661,当天购买此品牌商品的数量
select count(*) from user_log where brand_id='2661' and action='2';

image-20220704162548500

Result : 3

(10)查询多少用户当天点击了2661品牌的该店
select count(distinct user_id) from user_log where brand_id='2661' and action='0';

image-20220704162718069

Result : 1

(11)查询双十一当天男女购买商品比例
select count(distinct user_id) from user_log where gender='0' and action='2';
select count(distinct user_id) from user_log where gender='1' and action='2';

image-20220704163358602

Result : 238 (女)

image-20220704163629172

Result : 214 (男)

男 女 比 例 = 214 / 238 = 89.916 % 男女比例 = 214 / 238 = 89.916\% =214/238=89.916%

(12)查询某一天在该网站购买商品超过5次的用户id
select user_id from user_log where action='2' group by user_id having count(action='2')>5;

image-20220704164153792

Result :

user_id
1321
6058
16464
18378
23786
26516
32569
35260
41494
47958
55440
61703
69247
70816
71744
84400
106446
106629
153790
161778
171909
173427
179194
186568
188977
196638
203651
211273
212058
212504
217844
219316
234456
242845
249869
251260
256190
261596
270040
272775
274559
278823
278884
283204
284990
289429
310348
310632
320313
328230
330576
332670
333389
345251
356220
356408
366342
370679
378206
379005
389295
396129
407719
409280
422917

(13)创建姓名缩写表,其中字段大于4条,并使查询插入,最后显示姓名缩写表格数据
  • 创建表gr
create external table dbtaobao.GR(user_id int,item_id int,age_range int,gender int,province string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;

image-20220704170009449

  • 从表user_log中导入user_id,item_id,age_range,gender,province数据到表gr
insert into table gr select user_id,item_id,age_range,gender,province from user_log;

image-20220704170259479

  • 查询表gr的前十条数据
select * from gr limit 10;
image-20220704170426730
  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Hive数据分析项目是利用Hive工具进行大规模数据分析和处理的项目。Hive是一个建立在Hadoop平台上的数据仓库工具,它能够将结构化的数据映射成一张数据库表,并且提供了类SQL查询语言HQL来查询数据。在Hive数据分析项目中,首先需要将数据加载到Hive中,然后通过HQL语言进行数据查询和分析。Hive数据分析项目通常涉及大量的数据处理工作,需要编写复杂的HQL查询语句来实现各种数据分析需求,如数据聚合、筛选、连接等操作。同时,对于大规模数据的处理,项目中还需要考虑到性能优化、并行计算、数据压缩等技术手段来提高数据处理效率。除此之外,Hive数据分析项目还需要考虑数据安全性、备份与恢复策略、集群监控等运维工作。最终,项目的成果通常会以报表、可视化图表、数据报告等形式展现,为企业决策提供数据支持。 在Hive数据分析项目中,需要具备Hive的基本操作技能和SQL语言编程能力,并且对Hadoop生态系统有一定的了解,熟悉MapReduce编程模型、HDFS存储系统、YARN资源调度等知识。同时,理解企业数据分析需求,具备数据挖掘、统计分析等相关知识,能够根据业务需求设计和优化数据处理流程。另外,对于大规模数据的处理技术和性能优化策略也需有一定的了解,能够应对数据分析过程中的各种技术挑战和问题。总之,Hive数据分析项目需要综合运用大数据技术、数据分析能力和业务理解来完成数据处理与分析工作,为企业决策提供有力支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值