Shawson Lim

搬运工. 砌匠. 包工头.

Category
 » mysql
 » golang
 » linux
 » git
 » php
 » front
 » staticstics
 » default
 » tools

[Hadoop] Pig实现站点流量PV和UV统计

10 Oct 2014 » staticstics

通过Nginx采集流量统计相关日志,然后通过Bash工具将日志加工成Pig默认的格式(字段用tab分隔)并将日志导入到hdfs中, 然后通过Pig从hdfs中将数据导入并编写分析逻辑进行数据分析最后将结果保存至hdfs中,有必要则同步至Mysql。 其它用例如用户留存统计,进行留存统计时则将每日的用户分析后存储于hdfs以便隔天进行数据关联对比。

--
-- 此处的数据切割应当将由Bash处理,为了实验正则表达的使用所以这里采用这个方式
REGISTER '/usr/local/pig/contrib/piggybank/java/piggybank.jar'

--
A = LOAD 'xxx'
        USING org.apache.pig.piggybank.storage.MyRegExLoader(
                '(.*)###(.*)###xxx=(\\d+)&xxx=([^&]+).*###.*'
        ) AS (
                ip:chararray,
                time:chararray,
                game_id:int,
                token:chararray
        );

--
-- 计算PV
B = FOREACH (GROUP A BY game_id) GENERATE group,COUNT(A.ip) AS count;
C = ORDER B BY count ASC;
STORE C INTO 'pv.out';

--
-- 计算UV
B = GROUP A BY game_id;
C = FOREACH B {D = DISTINCT A.token; GENERATE group, COUNT(D) AS count;};
E = ORDER C BY count ASC;
STORE E INTO 'uv.out';
© Shawson Lim - https://github.com/linsir123 - Powered by Jekyll.