本文共 1067 字,大约阅读时间需要 3 分钟。
1.分析指标
每日登陆人数用户在N天内每日的登陆人数。
2.静态分析数据
静态观察CharacterLogin中的20141027.txt数据文件,结合xml文件,发现有两个字段很有用,分别是LogTime和IsLogin。这里的IsLogin表示登陆和登出,无论取什么值,都可以看作登录。也就是说,有用的字段实际上只有2个。
3.基础层数据分析
1.先把全部数据导入到hdfs中 执行hdfs dfs -put /GameData /
数据就导入到hdfs的根目录下
2.创建一个外部临时表【临时表的作用是中转】,把数据导入到hive中
create external table t2(line string) location "/GameData/2015-6-12/0001/0007/CharacterLogin";
3.测试分割的语法,比如分割一行的内容 select split(line, '\\|') from t2 limit 1;
4.取出自己需要的值,建立表 在建表之前,考虑到需求中的日期格式,所以在hive中对日期数据进行处理,毫秒级时间转化为yyyy-MM-dd格式
然后创表:
create table CLogin as select split(line,"\\|")[5] as AccountID,split(line,"\\|")[6] CharacterID,from_unixtime(cast(substr(split(line,"\\|")[8],0,10) as bigint),"yyyy-MM-dd") LogTime,split(line,"\\|")[10] IsLogin from t2;
使用查询语句进行验证:
select * from clogin limit 1;
因为要统计每日的登陆人数,所以再次做出测试:
select count(accountid),LogTime from CLogin group by LogTime limit 1;
5.在这里我们已经可以进行初步的计算每日,不过由于需要进行表格展示给用户,所以我们使用了可视化工具echarts。
计算好的数据:create table n_days_stat as select count(accountid),LogTime from CLogin group by LogTime;
进行检验:
select * from n_days_stat limit 10;
转自
转载地址:http://baazi.baihongyu.com/