如何去实现hive离线分析脚本

总共分为3步:
1.编写hql脚本
简单案例:
编写hql脚本:vim tongji1.hql
内容如下:

select * from fluxdb.tongji1 where reporttime='${statis_date}';

很简单就是一个表查询,没啥逻辑
保存退出后,记得 赋予执行权限:chmod +x tongji1.hql

2.编写bash脚本

#!/bin/bash
#source /etc/profile;

export HADOOP_HOME=/home/01/software/hadoop-2.7.1

statis_time=`date +%Y-%m-%d`

/home/01/software/hive-1.2/bin/hive -d statis_date=${statis_time} -f /home/01/temp/tongji1.hql >>/home/01/temp/tongji1_data_${statis_time}.txt 2>>/home/01/temp/tongji1_${statis_time}.log &

这里解释下:

>tongji1_data_${statis_time}.txt  #是将hivesql脚本查询的数据输入到tongji1_data.txt文件中,注意这里是覆盖,如果此文件存在且里面有数据则直接从前排开始覆盖,如果在执行脚本的时候tongji1_data.txt文件不存在,则自动在脚本所在目录下创建此文件
>>tongji1_data_${statis_time}.txt   #是将数据追加到数据文件中,与上面不同
2>tongji1_${statis_time}.log   # 是将脚本执行信息输入到日志文件中,以便后续排查问题,如果不需要日志信息则可以写成: 2>/dev/null
&    #是将脚本命令后台执行

3.配置定时任务
定时任务我这边用的是crontab去做的定时
执行crontab -e 命令 编辑该用户的定时任务
下面是每分钟执行一次(测试简单查询):

*/1 * * * * /home/01/temp/flux.sh

你可能感兴趣的:(hive,shell)