分享

Hive查询URL点击率

Joker 发表于 2015-9-7 10:29:02 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 14941
问题描述:
hive表中存放了很多数据,其中有两个字段
referrer_url 上一页访问的页面
url   从上一个访问过来的当前页

我通过

[mw_shl_code=sql,true]select url, referrer_url, count(url) as c_url from table
where (referrer_url = 'http://www.xxx.xxx.cn/' or referrer_url = 'http://www.xxx.xxx.xx' or referrer_url = 'www.xxxx.xxx.xx')  
and (domain = '100103')  group by pv_url, pv_referrer_url order by c_url desc limit 10;
[/mw_shl_code]

查询出一条URL名为

www.abc.com为63条

我把上述的数据存入到临时表中,然后再和大表JOIN

[mw_shl_code=sql,true]select  url, referrer_url, count(url) as cc_url from table p
JOIN temp_B ON(referrer_url = temp_B.url and p.domain = '100103')
group by  referrer_url, url order by cc_url desc;
[/mw_shl_code]

但是www.abc.com一组下的URL数据结果不为63条。


找了半天还是没有灵感,有类似的或有方法的朋友提示下!

已有(8)人评论

跳转到指定楼层
leo_1989 发表于 2015-9-7 12:11:38
大表有多少被连接的数据
回复

使用道具 举报

Joker 发表于 2015-9-7 13:34:38
leo_1989 发表于 2015-9-7 12:11
大表有多少被连接的数据

连接后输出数据几千条
回复

使用道具 举报

leo_1989 发表于 2015-9-7 13:48:37
Joker 发表于 2015-9-7 13:34
连接后输出数据几千条

跟连接的方式有关系。
左连或则右连结果是不一样的。

回复

使用道具 举报

Joker 发表于 2015-9-7 13:49:48
leo_1989 发表于 2015-9-7 13:48
跟连接的方式有关系。
左连或则右连结果是不一样的。

我的是内连接啊,两个Key值是需要相同的!
回复

使用道具 举报

Alkaloid0515 发表于 2015-9-7 17:46:08
Joker 发表于 2015-9-7 13:49
我的是内连接啊,两个Key值是需要相同的!

limit 10跟这个是不是有关系
select url, referrer_url, count(url) as c_url from table
where (referrer_url = 'http://www.xxx.xxx.cn/' or referrer_url = 'http://www.xxx.xxx.xx' or referrer_url = 'www.xxxx.xxx.xx')  
and (domain = '100103')  group by pv_url, pv_referrer_url order by c_url desc limit 10;


回复

使用道具 举报

Joker 发表于 2015-9-7 17:51:54
Alkaloid0515 发表于 2015-9-7 17:46
limit 10跟这个是不是有关系
select url, referrer_url, count(url) as c_url from table
where (re ...

恩,limit出前10条最多的数据,放入临时表temp_B中,然后又和大表进行关联。

查找发现,当我把该上层URL的当前URL查询出来后,有些数据又是上层URL出现过的数据。

例如:

上层url: http://www.baidu.com
根据上层URL查询到当前
http://www.baidu.com/abc这个URL

然后JOIN的时候获取http://www.baidu.com/abc相同的Key又获取到了 http://www.baidu.com这条URL了!

这样导致我逻辑上出现了错误,所以数据会增大。

但是,如果把上一层URL查询得到的结果全部放入一张临时表,通过临时表和这张表前10条数据进行JOIN
又会出现一个问题,由于上层URL过滤出来的都是来自http://www.baidu.com的数据
上层URL = http://www.baidu.com/abc就会找不到了。

所以现在被困在这里,不知道有什么好点的办法!

谢谢!
回复

使用道具 举报

NEOGX 发表于 2015-9-7 18:45:38
Joker 发表于 2015-9-7 17:51
恩,limit出前10条最多的数据,放入临时表temp_B中,然后又和大表进行关联。

查找发现,当我把该上层U ...

上层的上层,这个有点死循环的感觉。
是不是重复了,楼主看看那个不想重复,使用关键字distinct
回复

使用道具 举报

zhen657778102 发表于 2015-9-7 21:24:39
不错的资料,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条