加载数据
数据加载到Hive分区表(两个分区,日期(20160316)和小时(10))中
每日加载前一天的日志文件数据到表db_track.track_log
>> 数据存储
说明:
数据日志文件,放入某个目录下
>>>> 每天日志文件放入同一个目录
20160316 - 目录名称
>>>> 日志文件数据,每个小时生成一个文件,一天总共有二十四个文件
2016031820
- 创建track_log.sh文件
#!/bin/sh
## 环境变量生效
. /etc/profile
## 日志目录
LOG_DIR=/data/tracklogs
## 目录名称
yesterday=`date -d -1day '+%Y%m%d'`
##hive home
HIVE_HOME=/opt/app/cdh5.3.6/hive-0.13.1-cdh5.3.6
## 循环目录
for line in `ls ${LOG_DIR}/${yesterday}`
do
echo "loading ${line} ....."
##从文件名称中解析出日期和小时
daily=${line:0:8}
hour=${line:8:2}
##echo ${daily} ${hour}
LOAD_FILE=${LOG_DIR}/${yesterday}/${line}
## 命令加载
#${HIVE_HOME}/bin/hive -e "LOAD DATA LOCAL INPATH '${LOAD_FILE}' OVERWRITE INTO TABLE db_track.track_log PARTITION(date='${daily}',hour='${hour}');"
##文件加载
${HIVE_HOME}/bin/hive --hiveconf LOAD_FILE_PARM=${LOAD_FILE} --hiveconf daily_parm=${daily} --hiveconf hour_parm=${hour} -f /home/ycong/load_data.sql
done
- 创建load_data.sql文件
LOAD DATA LOCAL INPATH '${hiveconf:LOAD_FILE_PARM}' OVERWRITE INTO TABLE db_track.track_log PARTITION(date='${hiveconf:daily_parm}',hour='${hiveconf:hour_parm}');
执行命令
./load_track_logs.sh
创建crontab
## night 1:30 exute min hour day month week
30 1 * * * /bin/sh /home/ycong/load_track_logs.sh