大数据——Hive分析项目案例

Hive分析项目案例梳理

商业网站中经常统计的数据有哪些:

  1. UV:独立访客

    同一个用户访问多次会产生多个记录,但是这些记录会在运算的时候合并为1个

    语法:count(distinct guid)

  2. PV:页面浏览量

    同一个用户访问多次,产生多条记录,每一条记录都是一次PV

    语法:count(url)

  3. 登陆人数:

    登陆网站访问的人数[普通会员,VIP,SVIP]

    endUserId标识会员

  4. 游客人数:

    在没有登陆的情况下访问的客户。

    endUserId为空 --> “”/null

  5. 平均访问时长

    用户在网站停留的时间

    trackTime --> max - min

  6. 二跳率:

    在同一个网站中平均浏览了2个以上的页面的用户

    计算方法:(pv > 2) / 用户总数

  7. 独立IP:

    客户的公网IP

    正常情况下,分析一天内的数据,同一个用户的IP是不会变的

    语法:cunt(distinct ip)

  8. 分析结果表的结构

     键名				   描述				对应track_log字段
     session_id			会话id				sessionId
     guid				访客id				guid
     trackerU			访问去掉id,获取	trackerU
     					会话中的第一个			
     landing_url			着陆URL				url
     landing_url_ref		着落之前的URL		referer
     user_id				会员id				endUserId
     pv
     uv
     stay_time			停留时间			trackTime
     min_trackTime		最小时间
     ip
     provinceId			省份id				provinceId
    

分析步骤:

1.创建会话信息表
create table if not exists db_web_ana.session_info(
	session_id string,
	guid string,
	tracker_u string,
	landing_url string,
	landing_url_ref string,
	user_id string,
	pv string,
	uv string,
	stay_time string,
	min_trackTime string,
	ip string,
	province_id string
)
partitioned by (date string,hour string)
row format delimited fields terminated by '\t';
2.创建临时表1
create table if not exists db_web_ana.session_info_temp1(
	session_id string,
	guid string,
	user_id string,
	pv string,
	stay_time string,
	min_trackTime string,
	ip string,
	province_id string
)
row format delimited fields terminated by '\t';
3.分析数据并向临时表1中插入数据   
insert overwrite table db_web_ana.session_info_temp1
select 
sessionId,
guid,
endUserId,
url,
max(unix_timestamp(trackTime))-min(unix_timestamp(trackTime)),
min(from_unixtime(unix_timestamp(trackTime))),
ip,
provinceId,
from db_web_data.track_log where date='20150828'
group by 
sessionId;
4.创建临时表2
create table db_web_ana.session_info_temp2(
session_id string,
tracktime string,
tracker_u string,
landing_url string,
landing_url_ref string
)
row format delimited fields terminated by '\t';
5.分析数据并向临时表2中导入数据
insert overwrite table db_web_ana.session_info_temp2
select
sessionId,
trackTime,
tracker_u,
url,
referer
from db_web_data.track_log where date='20150828';
6.通过sessionId和trackTime将两张临时表join在一起后插入到会话信息表中:db_web_ana.session_info
insert overwrite table db_web_ana.session_info partition(date='20150828')
select
p1.session_id,
p1.guid,
p2.tracker_u,
p2.landing_url,
p2.landing_url_ref,
p1.user_id,
p1.pv,
p1.stay_time,
p1.min_tracktime,
p1.ip,
p1.province_id
from db_web_ana.session_info_temp1 p1 join db_web_ana.session_info_temp2 p2
on p1.session_id=p2.session_id and p1.min_tracktime=p2.tracktime;

执行一系列操作
$ bin/hive -f hql/web_ana/create_session_info.hql ;
bin/hive -f hql/web_ana/create_session_info_temp1.hql ;
bin/hive -f hql/web_ana/create_session_info_temp2.hql ;
bin/hive -f hql/web_ana/insert_session_info_temp1.hql ;
bin/hive -f hql/web_ana/insert_session_info_temp2.hql ;
bin/hive -f hql/web_ana/insert_join_session_info.hql 
7.创建结果表
日期	UV       	PV 		登录人数 		游客人数 	平均访问时长 	二跳率 	独立IP
create table db_web_ana.result_info(
date string,
uv string,
pv string,
login_users string,
visit_users string,
avg_time string,
sec_hop string,
ip_count string
)
row format delimited fields terminated by '\t';
8.为结果信息导入数据:
insert overwrite table db_web_ana.result_info
select
date,
count(distinct guid),
sum(pv),
count(case when user_id != '' then user_id else null end),
count(case when user_id = '' then user_id else null end),
avg(stay_time),
count(distinct (case when pv >= 2 then guid else null end))/count(distinct guid),
count(distinct ip)
from db_web_ana.session_info where date='20150828'
group by
date;
9.验证结果

日期	       UV        PV 	    登录人数 	游客人数 		平均访问时长 		      二跳率 		    独立IP
20150828	38985	131668.0	  18548		 21902		 750.7895179233622	0.5166089521610876	29668
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好!对于大数据项目,Spark和Hive是非常常用的工具。Spark是一个快速、通用的大数据处理引擎,它提供了丰富的API和内置库,支持在大规模数据集上进行高性能的分布式计算。Hive是一个建立在Hadoop之上的数据仓库工具,它提供了类似于SQL的查询语言HQL,可以方便地对存储在Hadoop集群上的数据进行查询和分析。 在一个大数据项目中,通常会使用Spark进行数据处理和计算,而Hive则用于数据的存储和查询。下面是一个基本的大数据项目流程: 1. 数据采集:从各种数据源(如传感器、日志、数据库等)收集原始数据,并进行清洗和预处理。 2. 数据存储:将处理后的数据存储到合适的存储系统中,如Hadoop分布式文件系统(HDFS)或云存储服务。 3. 数据处理:使用Spark进行数据处理和计算,可以使用Spark的DataFrame和SQL API对数据进行转换、过滤、聚合等操作。 4. 数据分析:使用Hive进行数据的查询和分析,可以通过HQL语言编写复杂的查询,从存储在Hadoop上的数据中提取有用信息。 5. 数据可视化:将分析结果可视化展示,可以使用图表、仪表板等方式呈现数据分析结果,帮助用户理解和决策。 这只是一个简单的大数据项目流程示例,实际项目中可能还涉及到数据清洗、特征工程、机器学习等其他环节。希望能对您有所帮助!如果您有更具体的问题,欢迎提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值