一、编写shell脚本ceshi.sh
#!/bin/bash
#参数传递
source /etc/profile;
source ~/.bash_profile;
BASEDIR=`dirname $0`
cd $BASEDIR
#classpath优先当前目录
CLASSPATH=$BASEDIR
#classpath其次是config目录
#classpath再次是lib目录下面的所有jar包
#设置参数
D=`date +%Y-%m-%d`
YESTODAY=`date -d "1 days ago" +%Y-%m-%d`
if [ $# == 2 ]; then
YESTODAY=$2
fi
if [ $# == 4 ]; then
D=$4
YESTODAY=$2
fi
#使用hive加载数据:
#方法一:
hive<<EOF
LOAD DATA LOCAL INPATH '$HADOOP_DATA_HOME/consume-$YESTODAY.csv' OVERWRITE INTO TABLE tlbb.consume_log PARTITION (dt='$YESTODAY');
EOF
#方法二:
echo "LOAD DATA LOCAL INPATH '/data/tlbb/hadoop_data/billlogout-$YESTODAY.csv' OVERWRITE INTO TABLE tlbb.logout_log PARTITION (dt='$YESTODAY');" | hive
#方法三:
yesterday=$(date -d '-1 day' '+%Y-%m-%d')
$HIVE_HOME/bin/hive -e "use mydb;ALTER TABLE mytable ADD PARTITION (dt = '$yesterday') LOCATION '/user/hive/warehouse/tail/$yesterday/';"
$HIVE_HOME/bin/hive -e "use mydb;select msec from mytable where dt='2015-01-07'"
二、授予脚本ceshi.sh可执行权限:chmod +x ./ceshi.sh
三、调度脚本:写一个死循环调度的例子:或者用crontab进行定时调度。
1、方法一:
1.编写shell脚本
vi /tmp/ceshi.sh
!/bin/sh
while [ true ]; do
/bin/sleep 1
/bin/date >>/tmp/date.txt
#可以将上面的hive操作写在这里:
done
2.后台运行
nohup /tmp/ceshi.sh 2>&1 > /dev/null &
3.确认每秒执行
tail -f /tmp/date.txt
4. 停止脚本运行进程
ps -ef | grep ceshi.sh |kill -9
或者:
pgrep ceshi.sh 命令查看进程号,例如:123,kill -s 9 123