将hdfs的数据导入hive

#!/bin/bash
startHive(){
source /etc/profile
source /etc/bashrc
APP_HOME=/usr/local/dataAnalysis/
CLASSPATH=${APP_HOME}/configig:/etc/hadoop/config:$APP_HOME/bin:$APP_HOME/dayReport-1.0.1-SNAPSHOT.jar
for i in "$APP_HOME"/lib/*.jar; do
   CLASSPATH="$CLASSPATH":"$i"
done
#运行java程序将数据写入hdfs
java -classpath $CLASSPATH  com.bitnei.assist.ToHive
#执行脚本,将hdfs的数据导入hive
hive -e "
use bigdata;
load data inpath '/spark/vehicle/result/test/ee.txt' OVERWRITE into table sys_vehicle_copy partition (year='$year',month='$month',day='$day');
set hive.exec.dynamic.partition.mode=nonstrict;
insert OVERWRITE  table sys_vehicle partition(year,month,day) select * from sys_vehicle_copy ;
truncate table sys_vehicle_copy;
"
}

function batchProcess(){
  curDate=$1
  endDate=$2
  year=$(echo $1 | cut -c 1-4)
  month=$(echo $1 | cut -c 5-6)
  day=$(echo $1 | cut -c 7-8)

  while [[ "$curDate" -le "$endDate" ]] ; do
    inputDate="$curDate-$curDate"
    partitionValue=$( date -d"$curDate" '+%Y-%m-%d')

    echo "begin execute $curDate"
    startHive

    sleep 1
    curDate=$( date -d"$curDate +1day" '+%Y%m%d')
  done
}

startDate="$(echo -e "$1" | tr -d '[:space:]')"

if [ "${#startDate}" == "0" ] ;
  then startDate=$(date -d'-1day' +%Y%m%d)
  else startDate=$1
fi


endDate="$(echo -e "$2" | tr -d '[:space:]')"

if [ "${#endDate}" == "0" ] ;
  then endDate=$startDate
  else endDate=$(date -d"$endDate" '+%Y%m%d' )
fi

echo "$startDate,$endDate"




echo "the inpute date are $inputDate"

batchProcess $startDate $endDate 

 

你可能感兴趣的:(shell)