博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何每日增量加载数据到Hive分区表
阅读量:5264 次
发布时间:2019-06-14

本文共 1492 字,大约阅读时间需要 4 分钟。

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


加载数据

数据加载到Hive分区表(两个分区,日期(20160316)和小时(10))中

每日加载前一天的日志文件数据到表db_track.track_log

1. 数据存储

数据日志文件,放入某个目录下,每天日志文件放入同一个目录

eg: 20160316 - 目录名称

日志文件数据,每个小时生成一个文件,一天总共有二十四个文件

eg: 2016031820

2. shell脚本编写

负责调度的shell脚本load_tracklogs.sh

注:这里涉及到了两个点:1)for循环 2) linux下字符串的截取${line:0:4} 3) 传递参数到hive的sql脚本

#!/bin/sh## 环境变量生效. /etc/profile## HIVE HOMEHIVE_HOME=/opt/cdh5.3.6/hive-0.13.1-cdh5.3.6## 日志目录LOG_DIR=/data/tracklogs## 目录名称, 依据日期date获取yesterday=`date -d -1days '+%Y%m%d'`### for line in `ls $LOG_DIR/${yesterday}`do  echo "loading $line .............."  #从文件名称中解析出日期和小时  daily=${line:0:4}${line:4:2}${line:6:2}  hour=${line:8:2}  LOAD_FILE=${LOG_DIR}/${yesterday}/${line}  ###  echo $daily + $hour  ###  ${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_PARAM=${LOAD_FILE} --hiveconf daily_param=${daily} --hiveconf hour_param=${hour} -f /home/hadoop/load_data.sqldone

负责加载数据的sql脚本

注: 怎么在HQL脚本中获取外接传递的参数

LOAD DATA LOCAL INPATH '${hiveconf:LOAD_FILE_PARAM}' OVERWRITE INTO TABLE db_track.track_log PARTITION(date = '${hiveconf:daily_param}', hour = '${hiveconf:hour_param}') ;

制定每天定时执行

可以在当前用户下直接创建:crontab -e
注:crontab中的五个 *号分别代表分,时,日,月,周,下面的例子就是每天晚上1点30运行任务的例子,注意sh命令前一般需要加上绝对路径

# LODAD DATA INTO TRACK_LOG30 1 * * * /bin/sh /home/hadoop/load_tracklogs.sh

转载于:https://www.cnblogs.com/raymoc/p/5321851.html

你可能感兴趣的文章
手机自带输入法emoji表情的输入,提交及显示——前端解决方案
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
LOJ.6160.[美团CodeM初赛 RoundA]二分图染色(容斥 组合)
查看>>
基于CMMI的敏捷开发过程文档裁剪
查看>>
0925 韩顺平java视频
查看>>
软件需求规格说明书
查看>>
53. Maximum Subarray
查看>>
MongDb的安装
查看>>
【java】:Junit
查看>>
STM32 f407 温湿度采集报警
查看>>
点击不同位置实现同一个文件上传框上传头像
查看>>
Xenia and Bit Operations CodeForces - 339D
查看>>
ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
查看>>
SpringBoot学习笔记
查看>>
pat1087. All Roads Lead to Rome (30)
查看>>
json上传github
查看>>
iOS-程序启动原理和UIApplication
查看>>
SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器...
查看>>
git的安装
查看>>
mysql 8.0 zip包安装
查看>>