接到产品一个任务,需要对使用产品的用户操作系统来个分析。对清洗后的hive数据进行分析,发现,数据恰恰把操作系统数据
进行了过滤,只有到rawlog里去进行数据分析了。但由于rawlog没有和数据库进行关联,就只有先对rawlog进行初步手工清洗,
不清洗掉操作系统数据,再建hive临时表来解决了。
第一步,用pig进行数据初步清洗,上代码
REGISTER 'elephant-bird-core-3.0.8.jar';
REGISTER 'elephant-bird-pig-3.0.8.jar';
set default_parallel 6;
org = load '/rawlog/vv/201503/*' using PigStorage('"') as(ip,get,stat,x1,x2,agent,x3,x4);
ff = foreach org generate get ,'#',agent;
store ff into '/tmp/vv-tmp/' ;
第二步,建立hive表。
CREATE EXTERNAL TABLE tmp_vv(url String, os string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '#'
LOCATION '/tmp/vv-tmp';
由于在日志里,看到操作系统是如下表示。
(compatible; MSIE 6.0; Windows NT 5.1; SV1)
查询了下,整理出一个相对应的需求。
Microsoft Windows XP (Windows NT 5.1)
Microsoft Windows 7 (Windows NT 6.1)
Microsoft Windows 8 (Windows NT 6.2)
第四步,对hive数据进行数据统计。
分别如下
hive> select count(*) from tmp_vv where os like '%Windows NT x.X%' limit 10;
其中x.x就是对应的操作系统版本。
总结:本项目是一个很简单的组合pig和hive的项目。在这个项目里,进一步体会到Pig在清洗数据方面的强大性,并且处理后的数据进入数据仓库后,用hive
能很方便的进行相关的统计。同时辅以自动化的查询界面,能让业务人员更方便的进行数据查询。