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

加载数据
    数据加载到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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值