一、需求
现有用户点击行为数据文件,每天产生会上传到
hdfs
目录,按天区分目录。
现在需要每天凌晨两点定时导入Hive
表指定分区中,并统计出今日活跃用户数插入指标表中。
- 日志文件
clicklog
用户点击行为数据,三个字段是用户
id
, 点击时间,访问页面
userId click_time index
uid1 2020-06-21 12:10:10 a.html
uid2 2020-06-21 12:15:10 b.html
uid1 2020-06-21 13:10:10 c.html
uid1 2020-06-21 15:10:10 d.html
uid2 2020-06-21 18:10:10 e.html
hdfs
目录会以日期划分文件,例如:
/user_clicks/20200621/clicklog.dat
/user_clicks/20200622/clicklog.dat
/user_clicks/20200623/clicklog.dat
...
- 开发需求
- 开发一个
import.job
每日从hdfs
对应日期目录下同步数据到该表指定分区。(日期格式同上或者自定义) - 开发一个
analysis.job
依赖import.job
执行,统计出每日活跃用户(一个用户出现多次算作一次)数并插入user_info
表中。
二、数据准备
(1)Hive
表
- 原始数据分区表
create table user_clicks(id string,click_time string,index string)
partitioned by(dt string) row format delimited fields terminated by '\t' ;
# 导入本地数据
LOAD DATA LOCAL INPATH '/root/data/click.txt' OVERWRITE INTO TABLE user_clicks PARTITION (dt='20200621');
- 指标表
create table user_info(active_num string,`date` string)
row format delimited fields terminated by '\t' ;