当前位置:首页 > PHP教程 > PHP总结归纳

HadoopPigUv

uv计算的方式,有好几种处理方式,粗略计算的方式有 ip, 或者服务器下发一个 id,如百度用的好像是 bduss或者baiduid之类的 但是要计算手机的用户的uv好像比pc上面复杂一点,这得感谢很多山寨厂商,并且各种平台,还有用户权限很多因素。 如 android有的版本

uv计算的方式,有好几种处理方式,粗略计算的方式有 ip, 或者服务器下发一个 id,如百度用的好像是 bduss或者baiduid之类的
但是要计算手机的用户的uv好像比pc上面复杂一点,这得感谢很多山寨厂商,并且各种平台,还有用户权限很多因素。
如 android有的版本如果要获取用户的 mac或者imei之类的,必须用户授权,ios平台的mac和openudid之类的,也会有这种情况
计算uv的标准,分平台,android是用mac+imei,而ios是用 mac+openudid。

以android平台分例,会存在如下四种情况

macimei
a1
1
a
b2
c
3
d4

从上面的例子可以看出存在如下几种情况
1. 有mac 并且有imei
2. 有mac, 无imei
3. 无mac, 有imei
4. 无mac,无imei

计算uv的方法很简单,基本思路如下
1. 先找出有mac并且有imei的做为集合a
2. 找出mac非空的集合标记为b
3. 找出mac为空的集合标记为c 4. 用b left join a by mac得到集合d
5. filter d by imei is null得到集合e 6. 用c left join a by imei 得到集合f
7. filter f by mac is null 得到集合g 8. uniqueset = union g, e, a

按照上面的计算步骤,用pig实现如下

a = filter uvset by (mac is not null) and (imei is not null); b = filter uvset by (mac is not null); c = filter uvset by (mac is null); d = join b by mac left outer, a by mac; e = filter d by (a::mac is null); e1 = foreach e generate b::mac as mac, b::imei as imei; f = join c by imei left outer, a by imei; g = filter f by (a::imei is null); g1 = foreach g generate g::mac as mac, g::imei as imei; uniqueset = union g1, e1, a; tmpset = group uniqueset all; outres = foreach tmpset generate count(uniqueset); dump outres;

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!