如何每日增量加载数据到Hive分区表

来源:互联网 发布:淘宝泰州医药城地址 编辑:程序博客网 时间:2024/06/05 10:09
加载数据    数据加载到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 homeHIVE_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.sqldone
  • 创建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 week30 1 * * * /bin/sh /home/ycong/load_track_logs.sh
0 0
原创粉丝点击