Hive使用脚本加载数据

方式一:直接写在脚本中

load_track_logs.sh:

#!/bin/sh

## 环境变量生效
. /etc/profile

## HIVE HOME
HIVE_HOME=/opt/cdh-5.3.6/hive-0.13.1-cdh5.3.6

## 日志目录
LOG_DIR=/datas/tracklogs

## 获取昨天的日期
yesterday=`date -d -1days '+%Y%m%d'`
####### echo "yesterday is ${yesterday}"

## 在此需要判断${LOG_DIR}/${yesterday} 是否存在

## 循环遍历目录中的文件名称
for line in `ls ${LOG_DIR}/${yesterday}`
do
  echo "loading ${line} to db_track.yhd_log_load"
  ## echo "prepare load the file: ${line}"
  ## 2016   11  18   19
  date=${line:0:4}${line:4:2}${line:6:2} 
  # date = ${line:0:8}
  hour=${line:8:2}
  ## echo "date: ${date}, hour: ${hour}"

  ${HIVE_HOME}/bin/hive -e "load data local inpath '${LOG_DIR}/${yesterday}/${line}' into table db_track.yhd_log_load partition (date = '${date}', hour = '${hour}') ;"
done
方式二:脚本调用sql文件

load_track_logs.sh:

#!/bin/sh

## 环境变量生效
. /etc/profile

## HIVE HOME
HIVE_HOME=/opt/cdh-5.3.6/hive-0.13.1-cdh5.3.6

## 日志目录
LOG_DIR=/datas/tracklogs

## 脚本目录
SCRIPT_DIR=/home/beifeng

## 获取昨天的日期
yesterday=`date -d -1days '+%Y%m%d'`
####### echo "yesterday is ${yesterday}"

## 在此需要判断${LOG_DIR}/${yesterday} 是否存在

## 循环遍历目录中的文件名称
for line in `ls ${LOG_DIR}/${yesterday}`
do
  echo "loading ${line} to db_track.yhd_log_load"
  ## echo "prepare load the file: ${line}"
  ## 2016   11  18   19
  date=${line:0:4}${line:4:2}${line:6:2} 
  # date = ${line:0:8}
  hour=${line:8:2}
  ## echo "date: ${date}, hour: ${hour}"
  load_file=${LOG_DIR}/${yesterday}/${line}

  ${HIVE_HOME}/bin/hive --hiveconf LOAD_FILE_PARAM=${load_file} --hiveconf DATE_PARAM=${date} --hiveconf HOUR_PARAM=${hour} -f ${SCRIPT_DIR}/load_data.sql 
done

load_data.sql:


load data local inpath '${hiveconf:LOAD_FILE_PARAM}' into table db_track.yhd_log_load partition (date = '${hiveconf:DATE_PARAM}', hour = '${hiveconf:HOUR_PARAM}') ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值