需求:执行周期性任务,每天的晚上6点,执行自动化脚本,载昨天的日志文件到HDFS,同时分析网站的多维数据(PV,UV按照省份和小时数进行分类查询)最后将查询的结果,存储在一张临时表中(表字段:date,hour,provinceId,pv,uv)存储在HIVE中,并且将该临时表中的所有数据,存储到MySQL中,以供第二天后台开发人员的调用,展示。
- 定时加载本地数据到HDFS,涉及到:auto.sh,crontab
- 清洗数据,打包jar,定时执行
/user/hive/warehouse/db_web_data.db/track_log/date=20150828/hour=18
part-000001
/user/hive/warehouse/db_web_data.db/track_log/date=20150828/hour=19
part-000001
- 建表track_log,也不需要建立现成的分区,临时指定清洗好的数据作为仓库源
alter table track_log add partition(date='20150828',hour='18') location"/user/hive/warehouse/db_web_data.db/track_log/date=20150828/hour=18";
alter table track_log add partition(date='20150828',hour='18') location"/user/hive/warehouse/db_web_data.db/track_log/date=20150828/hour=19";
- 开始分析想要的数据,将结果存储在Hive的临时表中
- 创建临时表:
create table if not exists temp_track_log(date string, hour string, provinceId string, pv string, uv string) row format delimited fields terminated by '\t';
- 向临时表中插入数据:
insert overwrite table 库名.temp_track_log select date, hour, provinceId, count(url) pv, count(distinct guid) uv from track_log where date='20150828' group by date, hour, provinceId;
- 使用自定义的JAR,导入本地导出的文件到MySQL或者使用Sqoop。