目录
******一 **淘宝用户行为分析
1、项目背景
随着各大电商平台的发展,电商平台的获客成本也在不断增加。在此情况下,基于用户数据分析来为企业经营提供决策、了解各个渠道的转化率是很有必要的。在⼤数据的不断发展下,⼤数据成为了⼀个热门的⾏业,应⽤在各个领域。⽤户⾏为分析就是其中的⼀个应⽤⽅向。另外智能设备的快速发展,⼈们的⽣活已经离不开智能设备了。⼈们花费在智能设备的⼤部分时间在购物平台上⾯,⽽我们在购物平台上浏览信息会产⽣不同的信息来反应我们的⾏为。
⽤户⾏为信息在电商平台⼗分重要,通过⽤户⾏为分析,能够了解⽤户的情况,⽐如:他们不同的⽣活习惯、⽂化背景、⽣活位置等等这些信息都会影响他们的⾏为。而⽤户⾏为信息指的是在获得⽹站或APP等平台访问量基本数据的情况下,对其中的数据进⾏统计、分析,从中发现⽤户访问⽹站或APP等平台的规律来建⽴、进⼀步修正、或者重新指定⽹络营销策略等等进⽽实现精细化运营。
2、项目意义
对互联⽹⾦融、电商平台、线上教育、证券、短视频等这些⾏业的产品来说,⽤户⾏为数据⼗分重要。理解用户需求,从而用户展开针对性的活动,提高电商的运营品质,是电商在发展中的一个重要环节。通过此项目学习电商大数据分析的基本方法与相关指标。在这一背景下,对淘宝用户行为数据进行分析,⽬的在于⾃定义留存分析、精细化渠道质量评估、产品分析、精准营销、设计更有针对性、落地性的运营方案,有效增加营收。
******二 **项目展示
1、项目工程
idea中项目工程展示,如图2.1所示
图2.1
2、运行结果
每小时销量饼状图如图2.2所示:
图2.2
各品种订单数柱状图如图2.3和图2.4所示:
图2.3
图2.4
各品种订单数占比折线图如图2.5所示:
图2.5
商品购买行为折线图如图2.6所示:
图2.6
商品购买行为柱状图如图2.7所示:
图2.7
商品购买行为转化率饼状图如图2.8所示:
图2.8
商品2022年12月的top榜如图2.9所示:
图2.9
商品2022年12月的top榜折线图如图2.10所示:
图2.10
- 项目上线流程
将开发好的项目部署到服务器。
通过docker分别启动tomcat、mysql容器,navicat将数据导入到服务器数据库、项目部署到tomcat。
docker cp ZebraProject01_war_exploded tomcat:usr/local/tomcat/webapps/
对应的项目docker容器如图2.11所示:
图2.11
对应的数据库如图2.12所示
图2.12
访问地址:http://124.223.111.27:2023/ZebraProject01_war_exploded/servlet/ResServlet
项目上线成功如图2.13所示
图2.13
******三 **项目前置工作
1、数据获取
****** 1)数据接口******
本次获取的淘宝用户购物行为数据集的来源为阿里云天池数据集,
- 淘宝用户购物行为数据集 :
- 淘宝用户购物行为数据集_数据集-阿里云天池 (aliyun.com)
****** 2)**数据展示
数据集small_user.csv如图3.1所示
图3.1
2、项目工程搭建****
1)新建目录
在HDFS上新建目录order:hdfs dfs -mkdir /order/ 如图3.2所示
图3.2
2)上传数据
上传数据到HDFS目录下:hdfs dfs -put small_user.csv /order/ 如图3.3及图3.4所示
图3.3
图3.4
四** 数据清洗******
1、为数据集建表
启动Hadoop,如图4.1所示
图4.1
启动hive
1)、hive --service metastore &
2)、hive
如图4.2所示
图4.2
为数据集small_user.csv建立ods_order表
create external table ods_order(
user_id string,
item_id string,
behavior_type string,
user_geohash string,
item_category string,
time string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' location '/order/';
如图4.3所示
图4.3
2、数据查询
查询ods_order表前十条数据
select * from ods_order limit 10;如图4.4所示
图4.4
3、建立清洗表
user_geohash列地理位置的数据大多是空值 NULL ,且位置信息被加密处理了,难以研究。所以不选择该列分析,即直接删除。
将user_geohash字段去除掉,合并成新表ods_order_tmp
create table ods_order_tmp as select user_id,item_id,behavior_type,item_category,time from ods_order;如图4.5及图4.6所示
图4.5
图4.6
4、清洗结果****
查询清醒之后的前十条的数据的结果
select * from ods_order_tmp limit 10;
如图4.7所示
图4.7
5、数据对比
数据清洗前后10条数据的对比,如图4.8所示
图4.8
五 Hive数据分析****
****1、 ****分析各个时段的订单数
create table result1 as select substr(time,11,13) as hour,count(1) from ods_order_tmp where substr(time,11,13) is not null group by substr(time,11,13) having count(1)!=1;
hive创建表写入数据代码执行成功如图5.1所示
图5.1
****2、 ****分析各品类的订单数
create table result2 as select item_category,count(1) counts from ods_order_tmp group by item_category;
hive创建表写入数据代码执行成功如图5.2所示。
图5.2
****3、 ****分析各个购买行为的人数
create table result3 as select behavior_type,count(distinct user_id) counts from ods_order_tmp group by behavior_type;
hive创建表写入数据代码执行成功如图5.3所示。
图5.3
*4*****、 ****分析 behavior_type 从1到2的转化率
Create table result4_1 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=1;
hive创建表写入数据代码执行成功如图5.4所示。
图5.4
Create table result4_2 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=2;
hive创建表写入数据代码执行成功如图5.5所示
图5.5
Create table result4_3 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=3;
hive创建表写入数据代码执行成功如图5.6所示。
图5.6
Create table result4_4 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=4;
hive创建表写入数据代码执行成功如图5.7所示。
图5.7
create table result4 as select '1-2' as key,round(a.counts/b.counts,2) ratio from result4_2 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.8所示。
图5.8
create table result6 as select '1-3' as key,round(a.counts/b.counts,2) ratio from result4_3 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.9所示。
图5.9
create table result7 as select '1-4' as key,round(a.counts/b.counts,2) ratio from result4_4 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.10所示。
图5.10
*5*****、 ****分析 2022年12月的top10品类
create table result5 as select item_category,count(1) counts from ods_order_tmp group by item_category order by counts desc limit 10;
hive创建表写入数据代码执行成功如图5.11及图5.12所示。
图5.11
图5.12
六 数据导出
1、Mysql建库****
创建数据库test1
create database test1;
2、Mysql建表****
******1) **分析各个时段的订单数
MYSQL的result1建表命令:
CREATE TABLE result1
(
hour
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
2) 分析各品类的订单数
MYSQL的result2建表命令:
CREATE TABLE result2
(
item_category
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
3) 分析各个购买行为的人数
MYSQL的result3建表命令:
CREATE TABLE result3
(
behavior_type
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
4)分析 behavior_type 从1到2的转化率
MYSQL的result4、result6和result7建表命令:
CREATE TABLE result4
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE result6
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE result7
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
5)分析 2022年12月的top10品类
MYSQL的result5建表命令:
CREATE TABLE result5
(
item_category
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
3、Sqoop数据导出****
1)分析各个时段的订单数****
将hive的数据导入MYSQL的result1命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result1 --export-dir '/hive/warehouse/result1' --fields-terminated-by '\001';
查询result1表的数据:select * from result1;
查询结果如图6.1所示。
图6.1
2)分析各品类的订单数****
将hive的数据导入MYSQL的result2命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result2 --export-dir '/hive/warehouse/result2' --fields-terminated-by '\001';
查询result2表的数据:select * from result2;
查询结果如图6.2所示。
图6.2
3)分析各个购买行为的人数****
将hive的数据导入MYSQL的result3命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result3 --export-dir '/hive/warehouse/result3' --fields-terminated-by '\001';
查询result3表的数据:select * from result3;
查询结果如图6.3所示。
图6.3
4)分析 behavior_type 从1到2的转化率****
将hive的数据导入MYSQL的result4、result6和result7命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result4 --export-dir '/hive/warehouse/result4' --fields-terminated-by '\001';
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result6 --export-dir '/hive/warehouse/result6' --fields-terminated-by '\001';
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result7 --export-dir '/hive/warehouse/result7' --fields-terminated-by '\001';
查询result4表的数据:select * from result4;
查询结果如图6.4所示。
图6.4
查询result6表的数据:select * from result6;
查询结果如图6.5所示。
图6.5
查询result7表的数据:select * from result7;
查询结果如图6.6所示。
图6.6
5)分析 2022年12月的top10品类****
将hive的数据导入MYSQL的result5命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result5 --export-dir '/hive/warehouse/result5' --fields-terminated-by '\001';
查询result5表的数据:select * from result5;
查询结果如图6.7所示
图6.7
七 可视化的核心代码
- Echarts图实现的核心代码
window.onload = function(){
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
//设置选项
option = {
//标题
title : {text: '每小时的订单数top10',subtext: '',x:'center'},
//提示框
tooltip : {
trigger: 'item', formatter: "{a}
{b} : {c} ({d}%)"},
//图例
legend: {
orient : 'vertical',x : 'left',
data:['第 22小时','第 21小时','第 20小时','第 23小时','第 19小时','第 14小时','第 15小时','第 10小时','第 13小时','第 11小时','第 16小时','第 12小时','第 00小时','第 18小时','第 17小时']},
//工具箱
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {
show: true,
type: ['pie', 'bar','line']
},
restore : {show: true},
saveAsImage : {show: true}
}
},
//是否启用拖拽重计算特性,默认关闭
calculable : true,
//驱动图表生成的数据内容
series : [{name:'每个小时',type:'pie',radius : '55%',center: ['50%', '60%'],data:[{value:27084, name:'第 22小时'},{value:25834, name:'第 21小时'},{value:22393, name:'第 20小时'},{value:21187, name:'第 23小时'},{value:18487, name:'第 19小时'},{value:14831, name:'第 14小时'},{value:14693, name:'第 15小时'},{value:14172, name:'第 10小时'},{value:14042, name:'第 13小时'},{value:13964, name:'第 11小时'},{value:13669, name:'第 16小时'},{value:13468, name:'第 12小时'},{value:13427, name:'第 00小时'},{value:12979, name:'第 18小时'},{value:12656, name:'第 17小时'}]}]
};
// 为echarts对象加载数据
myChart.setOption(option);
}
- MySQL的数据库连接的核心代码
- web.xml的配置代码
<servlet-name>APP01Servlet</servlet-name>
<servlet-class>com.qf.zebra.web.APP01Servlet</servlet-class>
</servlet> <servlet-mapping><servlet-name>APP01Servlet</servlet-name>
<url-pattern>/servlet/APP01Servlet</url-pattern>
</servlet-mapping> <servlet><servlet-name>ResServlet</servlet-name>
<servlet-class>com.qf.zebra.web.ResServlet</servlet-class>
</servlet> <servlet-mapping><servlet-name>ResServlet</servlet-name>
<url-pattern>/servlet/ResServlet</url-pattern>
</servlet-mapping> <welcome-file-list><welcome-file>index.jsp</welcome-file>//默认打开的页面
</welcome-file-list>
八** 结束语******
不足:本次实训在对数据统计分析时缺少了更多的运用开窗函数进行分析,缺乏了一点实用性,最后选择数据库上,我们组选择了MySQL数据库进行的数据展示的,实时性不高,项目当中也还有许多的不足,需要改进。
此外,我们组的项目是基于hive的离线分析项目,FLUME是用于实时产生的数据。并没有用到FLUME监听数据.也没有通过MR来处理数据,只是在hive里面触发了MR,今后如果还遇到类似的项目我们应该尝试用MR来处理数据
在通过echart进行可视化展示的过程中,由于自身技术水平有限加上时间可能不够,并没有用vue、springboot等框架来进行前后端分离的项目开发,只用了简单的JDBC+SERVLET等技术栈。在平时的项目开发中,一般不应该这样做,耦合性太高了,而且java这边写的很难受,java用字符串拼接的写法十分难受麻烦。正确写法是在后端提供数据接口,前端来通过ehcart渲染到页面上。
总结:通过本次的实训,我们学会了很多的东西,包括一些技术上的东西,比如一些大数据时代的数据库的底层运营,还有一些工具的运用;还有学习上的方法,比如在搭建集群的时候,遇到集群塌了,不要慌,认真逐一排查具体节点,一个一个解决;比如在运用MR处理数据的时候,由于自身机器的原因,本地开发的时候发生了出现了很多bug,但最终在小组成员的相互合作的情况下还有老师的帮助下,终于解决了bug。所以今后学习的时候,遇到报错不要慌,认真看报错的源头,善于发现错误,才会进步,在学习中要多做思维导图来有效的巩固知识点,把学过的东西有效的串联起来。最后感谢各位老师的辛苦付出
目录
******一 **淘宝用户行为分析
1、项目背景
随着各大电商平台的发展,电商平台的获客成本也在不断增加。在此情况下,基于用户数据分析来为企业经营提供决策、了解各个渠道的转化率是很有必要的。在⼤数据的不断发展下,⼤数据成为了⼀个热门的⾏业,应⽤在各个领域。⽤户⾏为分析就是其中的⼀个应⽤⽅向。另外智能设备的快速发展,⼈们的⽣活已经离不开智能设备了。⼈们花费在智能设备的⼤部分时间在购物平台上⾯,⽽我们在购物平台上浏览信息会产⽣不同的信息来反应我们的⾏为。
⽤户⾏为信息在电商平台⼗分重要,通过⽤户⾏为分析,能够了解⽤户的情况,⽐如:他们不同的⽣活习惯、⽂化背景、⽣活位置等等这些信息都会影响他们的⾏为。而⽤户⾏为信息指的是在获得⽹站或APP等平台访问量基本数据的情况下,对其中的数据进⾏统计、分析,从中发现⽤户访问⽹站或APP等平台的规律来建⽴、进⼀步修正、或者重新指定⽹络营销策略等等进⽽实现精细化运营。
2、项目意义
对互联⽹⾦融、电商平台、线上教育、证券、短视频等这些⾏业的产品来说,⽤户⾏为数据⼗分重要。理解用户需求,从而用户展开针对性的活动,提高电商的运营品质,是电商在发展中的一个重要环节。通过此项目学习电商大数据分析的基本方法与相关指标。在这一背景下,对淘宝用户行为数据进行分析,⽬的在于⾃定义留存分析、精细化渠道质量评估、产品分析、精准营销、设计更有针对性、落地性的运营方案,有效增加营收。
******二 **项目展示
1、项目工程
idea中项目工程展示,如图2.1所示
图2.1
2、运行结果
每小时销量饼状图如图2.2所示:
图2.2
各品种订单数柱状图如图2.3和图2.4所示:
图2.3
图2.4
各品种订单数占比折线图如图2.5所示:
图2.5
商品购买行为折线图如图2.6所示:
图2.6
商品购买行为柱状图如图2.7所示:
图2.7
商品购买行为转化率饼状图如图2.8所示:
图2.8
商品2022年12月的top榜如图2.9所示:
图2.9
商品2022年12月的top榜折线图如图2.10所示:
图2.10
- 项目上线流程
将开发好的项目部署到服务器。
通过docker分别启动tomcat、mysql容器,navicat将数据导入到服务器数据库、项目部署到tomcat。
docker cp ZebraProject01_war_exploded tomcat:usr/local/tomcat/webapps/
对应的项目docker容器如图2.11所示:
图2.11
对应的数据库如图2.12所示
图2.12
访问地址:http://124.223.111.27:2023/ZebraProject01_war_exploded/servlet/ResServlet
项目上线成功如图2.13所示
图2.13
******三 **项目前置工作
1、数据获取
****** 1)数据接口******
本次获取的淘宝用户购物行为数据集的来源为阿里云天池数据集,
- 淘宝用户购物行为数据集 :
- 淘宝用户购物行为数据集_数据集-阿里云天池 (aliyun.com)
****** 2)**数据展示
数据集small_user.csv如图3.1所示
图3.1
2、项目工程搭建****
1)新建目录
在HDFS上新建目录order:hdfs dfs -mkdir /order/ 如图3.2所示
图3.2
2)上传数据
上传数据到HDFS目录下:hdfs dfs -put small_user.csv /order/ 如图3.3及图3.4所示
图3.3
图3.4
四** 数据清洗******
1、为数据集建表
启动Hadoop,如图4.1所示
图4.1
启动hive
1)、hive --service metastore &
2)、hive
如图4.2所示
图4.2
为数据集small_user.csv建立ods_order表
create external table ods_order(
user_id string,
item_id string,
behavior_type string,
user_geohash string,
item_category string,
time string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' location '/order/';
如图4.3所示
图4.3
2、数据查询
查询ods_order表前十条数据
select * from ods_order limit 10;如图4.4所示
图4.4
3、建立清洗表
user_geohash列地理位置的数据大多是空值 NULL ,且位置信息被加密处理了,难以研究。所以不选择该列分析,即直接删除。
将user_geohash字段去除掉,合并成新表ods_order_tmp
create table ods_order_tmp as select user_id,item_id,behavior_type,item_category,time from ods_order;如图4.5及图4.6所示
图4.5
图4.6
4、清洗结果****
查询清醒之后的前十条的数据的结果
select * from ods_order_tmp limit 10;
如图4.7所示
图4.7
5、数据对比
数据清洗前后10条数据的对比,如图4.8所示
图4.8
五 Hive数据分析****
****1、 ****分析各个时段的订单数
create table result1 as select substr(time,11,13) as hour,count(1) from ods_order_tmp where substr(time,11,13) is not null group by substr(time,11,13) having count(1)!=1;
hive创建表写入数据代码执行成功如图5.1所示
图5.1
****2、 ****分析各品类的订单数
create table result2 as select item_category,count(1) counts from ods_order_tmp group by item_category;
hive创建表写入数据代码执行成功如图5.2所示。
图5.2
****3、 ****分析各个购买行为的人数
create table result3 as select behavior_type,count(distinct user_id) counts from ods_order_tmp group by behavior_type;
hive创建表写入数据代码执行成功如图5.3所示。
图5.3
*4*****、 ****分析 behavior_type 从1到2的转化率
Create table result4_1 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=1;
hive创建表写入数据代码执行成功如图5.4所示。
图5.4
Create table result4_2 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=2;
hive创建表写入数据代码执行成功如图5.5所示
图5.5
Create table result4_3 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=3;
hive创建表写入数据代码执行成功如图5.6所示。
图5.6
Create table result4_4 as select 'ratio' as ratio,count(1) counts from ods_order_tmp where behavior_type=4;
hive创建表写入数据代码执行成功如图5.7所示。
图5.7
create table result4 as select '1-2' as key,round(a.counts/b.counts,2) ratio from result4_2 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.8所示。
图5.8
create table result6 as select '1-3' as key,round(a.counts/b.counts,2) ratio from result4_3 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.9所示。
图5.9
create table result7 as select '1-4' as key,round(a.counts/b.counts,2) ratio from result4_4 a join result4_1 b on a.ratio=b.ratio;
hive创建表写入数据代码执行成功如图5.10所示。
图5.10
*5*****、 ****分析 2022年12月的top10品类
create table result5 as select item_category,count(1) counts from ods_order_tmp group by item_category order by counts desc limit 10;
hive创建表写入数据代码执行成功如图5.11及图5.12所示。
图5.11
图5.12
六 数据导出
1、Mysql建库****
创建数据库test1
create database test1;
2、Mysql建表****
******1) **分析各个时段的订单数
MYSQL的result1建表命令:
CREATE TABLE result1
(
hour
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
2) 分析各品类的订单数
MYSQL的result2建表命令:
CREATE TABLE result2
(
item_category
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
3) 分析各个购买行为的人数
MYSQL的result3建表命令:
CREATE TABLE result3
(
behavior_type
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
4)分析 behavior_type 从1到2的转化率
MYSQL的result4、result6和result7建表命令:
CREATE TABLE result4
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE result6
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE result7
(
key
varchar(20) DEFAULT NULL,
ratio
decimal(2,2) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
5)分析 2022年12月的top10品类
MYSQL的result5建表命令:
CREATE TABLE result5
(
item_category
varchar(20) DEFAULT NULL,
counts
int(10) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
3、Sqoop数据导出****
1)分析各个时段的订单数****
将hive的数据导入MYSQL的result1命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result1 --export-dir '/hive/warehouse/result1' --fields-terminated-by '\001';
查询result1表的数据:select * from result1;
查询结果如图6.1所示。
图6.1
2)分析各品类的订单数****
将hive的数据导入MYSQL的result2命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result2 --export-dir '/hive/warehouse/result2' --fields-terminated-by '\001';
查询result2表的数据:select * from result2;
查询结果如图6.2所示。
图6.2
3)分析各个购买行为的人数****
将hive的数据导入MYSQL的result3命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result3 --export-dir '/hive/warehouse/result3' --fields-terminated-by '\001';
查询result3表的数据:select * from result3;
查询结果如图6.3所示。
图6.3
4)分析 behavior_type 从1到2的转化率****
将hive的数据导入MYSQL的result4、result6和result7命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result4 --export-dir '/hive/warehouse/result4' --fields-terminated-by '\001';
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result6 --export-dir '/hive/warehouse/result6' --fields-terminated-by '\001';
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result7 --export-dir '/hive/warehouse/result7' --fields-terminated-by '\001';
查询result4表的数据:select * from result4;
查询结果如图6.4所示。
图6.4
查询result6表的数据:select * from result6;
查询结果如图6.5所示。
图6.5
查询result7表的数据:select * from result7;
查询结果如图6.6所示。
图6.6
5)分析 2022年12月的top10品类****
将hive的数据导入MYSQL的result5命令:
sh sqoop export --connect jdbc:mysql://hadoop01:3306/test1 --username root --password root --table result5 --export-dir '/hive/warehouse/result5' --fields-terminated-by '\001';
查询result5表的数据:select * from result5;
查询结果如图6.7所示
图6.7
七 可视化的核心代码
- Echarts图实现的核心代码
window.onload = function(){
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById('main'));
//设置选项
option = {
//标题
title : {text: '每小时的订单数top10',subtext: '',x:'center'},
//提示框
tooltip : {
trigger: 'item', formatter: "{a}
{b} : {c} ({d}%)"},
//图例
legend: {
orient : 'vertical',x : 'left',
data:['第 22小时','第 21小时','第 20小时','第 23小时','第 19小时','第 14小时','第 15小时','第 10小时','第 13小时','第 11小时','第 16小时','第 12小时','第 00小时','第 18小时','第 17小时']},
//工具箱
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {
show: true,
type: ['pie', 'bar','line']
},
restore : {show: true},
saveAsImage : {show: true}
}
},
//是否启用拖拽重计算特性,默认关闭
calculable : true,
//驱动图表生成的数据内容
series : [{name:'每个小时',type:'pie',radius : '55%',center: ['50%', '60%'],data:[{value:27084, name:'第 22小时'},{value:25834, name:'第 21小时'},{value:22393, name:'第 20小时'},{value:21187, name:'第 23小时'},{value:18487, name:'第 19小时'},{value:14831, name:'第 14小时'},{value:14693, name:'第 15小时'},{value:14172, name:'第 10小时'},{value:14042, name:'第 13小时'},{value:13964, name:'第 11小时'},{value:13669, name:'第 16小时'},{value:13468, name:'第 12小时'},{value:13427, name:'第 00小时'},{value:12979, name:'第 18小时'},{value:12656, name:'第 17小时'}]}]
};
// 为echarts对象加载数据
myChart.setOption(option);
}
- MySQL的数据库连接的核心代码
- web.xml的配置代码
<servlet-name>APP01Servlet</servlet-name>
<servlet-class>com.qf.zebra.web.APP01Servlet</servlet-class>
</servlet> <servlet-mapping><servlet-name>APP01Servlet</servlet-name>
<url-pattern>/servlet/APP01Servlet</url-pattern>
</servlet-mapping> <servlet><servlet-name>ResServlet</servlet-name>
<servlet-class>com.qf.zebra.web.ResServlet</servlet-class>
</servlet> <servlet-mapping><servlet-name>ResServlet</servlet-name>
<url-pattern>/servlet/ResServlet</url-pattern>
</servlet-mapping> <welcome-file-list><welcome-file>index.jsp</welcome-file>//默认打开的页面
</welcome-file-list>
八** 结束语******
不足:本次实训在对数据统计分析时缺少了更多的运用开窗函数进行分析,缺乏了一点实用性,最后选择数据库上,我们组选择了MySQL数据库进行的数据展示的,实时性不高,项目当中也还有许多的不足,需要改进。
此外,我们组的项目是基于hive的离线分析项目,FLUME是用于实时产生的数据。并没有用到FLUME监听数据.也没有通过MR来处理数据,只是在hive里面触发了MR,今后如果还遇到类似的项目我们应该尝试用MR来处理数据
在通过echart进行可视化展示的过程中,由于自身技术水平有限加上时间可能不够,并没有用vue、springboot等框架来进行前后端分离的项目开发,只用了简单的JDBC+SERVLET等技术栈。在平时的项目开发中,一般不应该这样做,耦合性太高了,而且java这边写的很难受,java用字符串拼接的写法十分难受麻烦。正确写法是在后端提供数据接口,前端来通过ehcart渲染到页面上。
总结:通过本次的实训,我们学会了很多的东西,包括一些技术上的东西,比如一些大数据时代的数据库的底层运营,还有一些工具的运用;还有学习上的方法,比如在搭建集群的时候,遇到集群塌了,不要慌,认真逐一排查具体节点,一个一个解决;比如在运用MR处理数据的时候,由于自身机器的原因,本地开发的时候发生了出现了很多bug,但最终在小组成员的相互合作的情况下还有老师的帮助下,终于解决了bug。所以今后学习的时候,遇到报错不要慌,认真看报错的源头,善于发现错误,才会进步,在学习中要多做思维导图来有效的巩固知识点,把学过的东西有效的串联起来。最后感谢各位老师的辛苦付出!
参考文献
[1]张岩,王胤祥,胡林生.Hive大数据仓库构建与应用——以大陆在美上市股票数据为例[J].数字通信世界,2021(04):186-187.
[2]何同飞. 基于Hadoop的大数据处理平台设计与实现[D].大连理工大学,2017.
[3]张锐.基于Hive数据仓库的物流大数据平台的研究与设计[J].电子设计工程,2017,25(09):31-35.DOI:10.14022/j.cnki.dzsjgc.2017.09.008.
[4]淘宝双11数据分析与预测课程案例-步骤三:将数据从Hive导入到MySQL--https://dblab.xmu.edu.cn/blog/1367/#more-1367
[5]大数据技术原理与应用 第十四章 基于Hadoop的数据仓库Hive 学习指南--https://dblab.xmu.edu.cn/blog/509/
[6]中国互联网络信息中心(CNNIC)《第32次中国互联网络发展统计报告》[R],2013
[7]中国互联网络信息中心(CNNIC)《第 33 次中国互联网络发展状况统计报告》[R],2014
[8]百度移动 《移动互联网发展趋势报告》[R],2012
[9]李振勇 《商业模式创新与战略转型》[M] 出版社:国家行政学院音像出版社,2009
!
参考文献
[1]张岩,王胤祥,胡林生.Hive大数据仓库构建与应用——以大陆在美上市股票数据为例[J].数字通信世界,2021(04):186-187.
[2]何同飞. 基于Hadoop的大数据处理平台设计与实现[D].大连理工大学,2017.
[3]张锐.基于Hive数据仓库的物流大数据平台的研究与设计[J].电子设计工程,2017,25(09):31-35.DOI:10.14022/j.cnki.dzsjgc.2017.09.008.
[4]淘宝双11数据分析与预测课程案例-步骤三:将数据从Hive导入到MySQL--https://dblab.xmu.edu.cn/blog/1367/#more-1367
[5]大数据技术原理与应用 第十四章 基于Hadoop的数据仓库Hive 学习指南--https://dblab.xmu.edu.cn/blog/509/
[6]中国互联网络信息中心(CNNIC)《第32次中国互联网络发展统计报告》[R],2013
[7]中国互联网络信息中心(CNNIC)《第 33 次中国互联网络发展状况统计报告》[R],2014
[8]百度移动 《移动互联网发展趋势报告》[R],2012
[9]李振勇 《商业模式创新与战略转型》[M] 出版社:国家行政学院音像出版社,2009
版权归原作者 attention庄 所有, 如有侵权,请联系我们删除。