地域统计

利用Hadoop 根据IP地址进行地域统计

爷,独闯天下 提交于 2020-02-29 21:46:50
最近一直在做地域统计的功能,用户下载app的日志中记录了IP,老大要根据这个IP做个地域统计,看看哪些地方的用户喜欢下载哪些应用。最初是用Java跑纯真IP地址数据库,然后对日志进行统计,不过效率不高,20+M的数据要跑几个小时,后来就把任务给我了,让我用Hadoop跑跑试试。 1. ip的解析,把ip地址解析成实际地址:使用了纯真ip数据库QQwry.dat 参考代码:http://blog.csdn.net/swazn_yj/article/details/1611020 2.新建一个hadoop项目,将ip解析的3个类放到一个包下面 3.QQwry的测试使用:项目中需要拿到ip的国家和省,然后追加到原始日志作为2个新字段,但是测试发现返回的数据不能直接拿来处理,所有就需要进一步的格式化处理。 @1.对于:内蒙,广西,新疆,宁夏,西藏这5个自治区,直接返回中国+自治区名 @2,包含省字的,直接返回中国+省份, @3,包含市的,主要是上海,北京,重庆,天津4个直辖市,返回中国+城市 @5,包含中国的,直接返回中国,省份字段留空; @6.其他就直接返回解析的数据,省份留空 (基本就是国外的) @4,测试中发现这样处理不干净,还有很多脏数据,例如包含大学和学院的,还有欧洲中部,XX网吧等。所有需要对这些脏数据进行处理。采用的方法是将脏数据按一定格式保存到dirtydata.txt中