2025年淘宝数据可视化大屏案例(Hadoop实验)_hadoop数据分析可视化案例(1)

淘宝数据可视化大屏案例(Hadoop实验)_hadoop数据分析可视化案例(1)既有适合小白学习的零基础资料 也有适合 3 年以上经验的小伙伴深入学习提升的进阶课程 涵盖了 95 以上大数据知识点 真正体系化 由于文件比较多 这里只是将部分目录截图出来 全套包含大厂面经 学习笔记 源码讲义 实战项目 大纲路线 讲解视频 并且后续会持续更新

大家好,我是讯享网,很高兴认识大家。

img
讯享网
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

数据集点击此处下载

2.准备环境,Hadoop集群,需要hdfs,hive,Fiume,sqoop等插件,需要提前自己安装,使用12月数据做一个分析


项目步骤

1.启动Hadoop集群并查看

start-all.sh jps 

讯享网

在这里插入图片描述
2.配置表支持事务(十分重要)

2.1 改配置文件hive-site.xml 或者 临时设置参数 命令行

讯享网<property> <name>hive.support.concurrency</name> <value>true</value> </property> <property> <name>hive.exec.dynamic.partition.mode</name> <value>nonstrict</value> </property> <property> <name>hive.txn.manager</name> <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value> </property> <property> <name>hive.compactor.initiator.on</name> <value>true</value> </property> <property> <name>hive.compactor.worker.threads</name> <value>1</value> <!--这里的线程数必须大于0 :理想状态和分桶数一致--> </property> <property> <name>hive.enforce.bucketing</name> <value>true</value> </property> 

首先在Hadoop计算机里面找到这个文件,因为配置文件已经存在了,我们只需要在后面添加上面的数据即可,操作步骤截图如下:

在这里插入图片描述
注意这里修改的是hive文件下面的,也就是第一个文件,不是第二个flume!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.2 使用vi命令,新建一个file_hive.properties文件,把下面的数据插入到里面

#定义agent名, source、channel、sink的名称 agent3.sources = source3 agent3.channels = channel3 agent3.sinks = sink3 #具体定义source agent3.sources.source3.type = spooldir agent3.sources.source3.spoolDir = /home/hadoop/taobao/data agent3.sources.source3.fileHeader=false #设置channel类型为磁盘 agent3.channels.channel3.type = file #file channle checkpoint文件的路径 agent3.channels.channel3.checkpointDir=/home/hadoop/taobao/tmp/point # file channel data文件的路径 agent3.channels.channel3.dataDirs=/home/hadoop/taobao/tmp #具体定义sink agent3.sinks.sink3.type = hive agent3.sinks.sink3.hive.metastore = thrift://hadoop:9083 agent3.sinks.sink3.hive.database = taobao agent3.sinks.sink3.hive.table = taobao_data agent3.sinks.sink3.serializer = DELIMITED agent3.sinks.sink3.serializer.delimiter = "," agent3.sinks.sink3.serializer.serdeSeparator = ',' agent3.sinks.sink3.serializer.fieldnames = user_id,item_id,behavior_type,user_geohash,item_category,date,hour agent3.sinks.sink3.batchSize = 90 #组装source、channel、sink agent3.sources.source3.channels = channel3 agent3.sinks.sink3.channel = channel3 
讯享网vi file_hive.properties 

在这里插入图片描述
该文件用于监听的作用,自动就会在家目录下面,然后我们需要创建几个文件夹,就是下图我备注的那些字段
在这里插入图片描述

mkdir -p /home/hadoop/taobao/data mkdir -p /home/hadoop/taobao/tmp/point 

在这里插入图片描述
3.3 创建数据库

由于版本问题,需要导入指定的jar包

讯享网把${HIVE_HOME}/hcatalog/share/hcatalog/下的所有包,拷贝入${FLUME_HOME}/lib 

执行下面的命令:

cd ${HIVE_HOME}/hcatalog/share/hcatalog/ cp * ${FLUME_HOME}/lib/ 

在这里插入图片描述
启动hive

讯享网hive 

创建数据库并使用

create database taobao; use taobao; 

建立表格

讯享网create table `taobao`.`taobao_data` ( `user_id` varchar(255) , `item_id` varchar(255) , `behavior_type` varchar(255) , `user_geohash` varchar(255) , `item_category` varchar(255) , `date` varchar(10) , `hour` varchar(3) ) clustered by(user_id) into 3 buckets row format delimited fields terminated by ',' stored as orc tblproperties('transactional'='true'); 

创建导出数据表

create table `taobao`.`taobao_result` ( `key` varchar(255) , `value` varchar(255)) ; 

在这里插入图片描述
4.导入数据

讯享网hive --service metastore -p 9083 

再去启动flume

flume-ng agent --conf conf --conf-file file_hive.properties -name agent3 -Dflume.hadoop.logger=INFO,console 

然后把文件数据导入到,之前创建的data文件夹里面就完成了自动导入

讯享网 mv /home/hadoop/12yue.csv /home/hadoop/taobao/data/ 

在这里插入图片描述


5.数据分析

5.1 把总访问量查询出来,导入到结果表

insert into taobao_result (select "PV", u. `总访问量` FROM (select count(\*) AS `总访问量` FROM taobao_data) u); 

在这里插入图片描述

讯享网INSERT INTO taobao_result (SELECT " UV", u. `用户数量` FROM (SELECT COUNT(DISTINCT user_id) AS `用户数量` FROM taobao_data) u); 

在这里插入图片描述
可以查看一下

select \* from taobao_result; 

在这里插入图片描述


5.2 – 浏览页跳失率:用户仅仅有pv行为,没有其它的收藏、加购、购买行为

讯享网INSERT INTO taobao_result (SELECT "跳失率", u. `总访问量` FROM ( SELECT b.`仅pv用户` / a.`总用户` AS `总访问量` FROM (SELECT count( DISTINCT user_id ) AS `总用户` FROM taobao_data) a , (SELECT count( DISTINCT user_id ) AS `仅pv用户` FROM taobao_data WHERE user_id NOT IN ( SELECT DISTINCT user_id FROM taobao_data WHERE behavior_type = '2' ) AND user_id NOT IN ( SELECT DISTINCT user_id FROM taobao_data WHERE behavior_type = '3' ) AND user_id NOT IN ( SELECT DISTINCT user_id FROM taobao_data WHERE behavior_type = '4' )) b ) u); 

注意在hive里面不可以使用in not in查询,所以这里要用连接查询解决这个问题

经过大量的测试,我自己写了一个sq语句,也可以达到以上的效果

首先把要插入的信息,查询出来

 SELECT "跳失率", u.`总访问量` FROM ( SELECT b.`仅pv用户` / a.`总用户` AS `总访问量` FROM (SELECT count( DISTINCT user_id ) AS `总用户` FROM taobao_data) a, (SELECT count( DISTINCT user_id ) AS `仅pv用户` from (select \* from taobao_data) as c LEFT JOIN (SELECT DISTINCT user_id as `id` FROM taobao_data WHERE behavior_type = '2' or behavior_type='3' or behavior_type='4') as d on c.user_id=d.id WHERE d.id is NULL ) as b ) as u; 

在这里插入图片描述插入

讯享网INSERT INTO taobao_result (SELECT "跳失率", u.`总访问量` FROM ( SELECT b.`仅pv用户` / a.`总用户` AS `总访问量` FROM (SELECT count( DISTINCT user_id ) AS `总用户` FROM taobao_data) a, (SELECT count( DISTINCT user_id ) AS `仅pv用户` from (select \* from taobao_data) as c LEFT JOIN (SELECT DISTINCT user_id as `id` FROM taobao_data WHERE behavior_type = '2' or behavior_type='3' or behavior_type='4') as d on c.user_id=d.id WHERE d.id is NULL ) as b ) as u); 

在这里插入图片描述
在这里插入图片描述
优化代码类型(思路类似)

SELECT count(DISTINCT user_id) from datas left JOIN (select DISTINCT user_id as t from datas WHERE behavior_type ='2' or behavior_type ='3' or behavior_type ='4') as a on user_id=a.t WHERE a.t is null 

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

小讯
上一篇 2025-03-08 11:53
下一篇 2025-04-01 16:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/71168.html