java 操作HBASE、HBASE结合MapReduce批量导入数据
java操作HDFS
MapReduce代码编写
hadoop自定义类型统计手机上网流量
RPC编写
java操作HIVE
网络日志分析
...
基于hadoop-1.1.2 开发 hadoop 相关项目版本:hive-0.9.0、hbase-0.94.7、zookeeper-3.4.5、sqoop-1.4.3
hadoop自定义类型统计手机上网流量
使用自定义类型来统计手机上网流量,日志数据格式如下:
1363157984041 13660577991 5C-0E-8B-92-5C-20:CMCC-EASY 120.197.40.4 s19.cnzz.com 站点统计 24 9 6960 690 200 1363157973098 15013685858 5C-0E-8B-C7-F7-90:CMCC 120.197.40.4 rank.ie.sogou.com 搜索引擎 28 27 3659 3538 200
从左到右分别代表:记录报告时间戳、手机号码、APMAC、ACMAC、访问的网址、网址种类、上行数据报数、下行数据报数、上行总流量、下行总流量
统计不同手机号的流量总和:上行数据报数、下行数据报数、上行总流量、下行总流量纵向统计
1.在hdfs根目录下,创建/wlan
bin/hadoop dfs -mkdir /wlan
2.上传数据至/wlan下
bin/hadoop dfs -put xxx.dat /wlan
3.执行mapreduce包下KpiApp.java程序进行统计
网站日志数据分析
网站日志格式是apache common日志格式, 分析一些核心指标,供运营决策者使用,获取一些业务相关的指标,这些指标是在第三方工具中无法获得。
bin/hadoop dfs -mkdir /xxx_logs
2.将hmbbs中HmbbsClear.java程序打包成jar文件
3.执行 upload_to_hdfs.sh脚本:上传数据至hdfs的/xxx_logs目录下并调jar程序,清洗指定日期数据将结果存至不同目录下(以日期命名)
清洗之前的数据:
清洗过程:
清洗之后的数据:
4.使用hive对清洗后的数据进行统计,建立外部分区表,脚本:
CREATE EXTERNAL TABLE hmbbs(ip string,atime string,url string) PARTITIONED BY (logdata string) ROW FORMAT DELIMITED FIELDS TREMINATED BY '\t' LOCATION '/hmbbs_cleaned';
5.增加分区,脚本:
ALTER TABLE hmbbs ADD PARTITION(logdata='2013-05-30') LOCATION '/hmbbs_cleaned/2013-05-30'
6.每天都要产生相应分区,将分区脚本写入upload_to_hdfs.sh,在上一天的数据清洗后自动加上该天分区
7.统计每日的pv,代码如下:
CREATE TABLE hmbbs_pv_2013_05_30 AS SELECT COUNT(1) AS PV FROM hmbbs WHERE logdate='2013_05_30';
8.统计每日的注册用户数,代码如下:
CREATE TABLE hmbbs_reguser_2013_05_30 AS SELECT COUNT(1) AS REGUSER FROM hmbbs WHERE logdate='2013_05_30' AND INSTR(url,'member.php?mod=register')>0;
9.统计每日的独立ip,代码如下:
CREATE TABLE hmbbs_ip_2013_05_30 AS SELECT COUNT(DISTINCT ip) AS IP FROM hmbbs WHERE logdate='2013_05_30';
10.统计每日的跳出用户,代码如下:
```
CREATE TABLE hmbbs_jumper_2013_05_30 AS SELECT COUNT(1) AS jumper FROM (SELECT COUNT(ip) AS times FROM hmbbs WHERE logdate='2013_05_30' GROUP BY ip HAVING times=1) e;
```
11.把每天统计的数据放入一张表:
```
CREATE TABLE hmbbs_2013_05_30 AS SELECT '2013_05_30', a.pv, b.reguser, c.ip, d.jumper FROM hmbbs_pv_2013_05_30 a
JOIN hmbbs_reguser_2013_05_30 b ON 1=1
JOIN hmbbs_ip_2013_05_30 c ON 1=1
JOIN hmbbs_jumper_2013_05_30 d ON 1=1 ;
```
12.使用sqoop把数据从hive导入到mysql中,脚本如下:
sqoop export --connect jdbc:mysql://hadoop:3306/hmbbs --username root -password admin --table hmbbs_logs_stat
--fields-terminated-by '\001' --export-dir '/hive/hmbbs_2013_05_30'
13.添加每天凌晨1点执行脚本调度
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。