Hive综合应用案例 — 用户搜索日志分析

第1关:2018年点击量最高的10个网站域名

---------- 禁止修改 ----------
 drop database if exists mydb cascade;
---------- 禁止修改 ----------
 
 
---------- begin ----------
---创建mydb数据库
create database mydb;
 
---使用mydb数据库
use mydb;
 
---创建表db_search
create table db_search(
id   string comment '用户编号',
key  string comment '搜索关键词',
ranking string comment '该URL在返回结果中的排名',
or_der string comment '点击顺序',
url string comment '域名',
time string comment '时间'
)row format delimited fields terminated by ' ';
 
 
 
 
---导入数据:/root/data.txt
load data local inpath '/root/data.txt' into table db_search;
 
--查询2018年点击量最多的10个网站域名
select url,count(*) cnt from db_search where year(time)='2018' 
group by url order by cnt desc limit 10;
 
 
 
 
---------- end ----------

第2关:同一种搜索词,哪个网站域名被用户访问最多

---------- 禁止修改 ----------
 drop database if exists mydb cascade;
---------- 禁止修改 ----------


---------- begin ----------
---创建mydb数据库
create database mydb;

---使用mydb数据库
use mydb;

---创建表db_search
create table db_search(
 id int,
 key1 string,
 ranking int,
 or_der int,
 url string,
 time1 string)
row format delimited fields terminated by ' ' ;




---导入数据:/root/data.txt
load data local inpath '/root/data.txt' into table db_search;


--分析同一种搜索词,哪个网站域名被用户访问最多,并根据访问次数降序取前十。
select t.key1,t.url,t.cnt from(
select key1,url,count(*) cnt,row_number() over (partition by key1 order by count(*) desc) rk from db_search group by key1,url) t
where t.rk<=1 order by t.cnt desc limit 10;
---------- end ----------

第3关:每月最火的搜索词

---------- 禁止修改 ----------
 drop database if exists mydb cascade;
---------- 禁止修改 ----------


---------- begin ----------
---创建mydb数据库
create database mydb;

---使用mydb数据库
use mydb;

---创建表db_search
create table db_search(
 id int,
 key1 string,
 ranking int,
 or_der int,
 url string,
 time1 string)
row format delimited fields terminated by ' ' ;

---导入数据:/root/data.txt
load data local inpath '/root/data.txt' into table db_search;

--分析每年每月哪个搜索词被搜索次数最多。
select concat(t.y1,'-',t.m),t.key1,t.cnt
from(
select year(time1) y1,month(time1) m,key1,count(*) cnt,row_number() over (partition by year(time1),month(time1) order by count(*) desc) rk
from db_search group by year(time1),month(time1),key1) t
where t.rk<=1;




---------- end ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值