Hive结合shell脚本企业实战用法

Hive结合shell脚本企业实战用法

1、Linux设置定时任务

编辑定时任务
[root@master ]#crontab -e

* * * * *

第1个*:表示分钟
第2个*:表示小时
第3个*:表示星期几
第4个*:表示几号
第5个*:表示月份

举例:
每分钟执行一次hql.sh脚本,将其日志存放到1.log目录中
*/1 * * * * /usr/local/soft/scripts/hql.sh >> /usr/local/soft/scripts/logs/1.log

2、Hive结合shell脚本使用

hive -e “SQL语句”
举例:
[root@master ~]# hive -e “select * from test1.students limit 10”

执行结果:
1500100001	施笑槐	22	女	文科六班
1500100002	吕金鹏	24	男	文科六班
1500100003	单乐蕊	22	女	理科六班
1500100004	葛德曜	24	男	理科三班
1500100005	宣谷芹	22	女	理科五班
1500100006	边昂雄	21	男	理科二班
1500100007	尚孤风	23	女	文科六班
1500100008	符半双	22	女	理科六班
1500100009	沈德昌	21	男	理科一班
1500100010	羿彦昌	23	男	理科六班
hive -f sql文件
当我们的SQL比较复杂,不方便写在hive -e 这一行,我们可以先把SQL语句写下文件里
举例:
[root@master ~]# cd /usr/local/soft/
[root@master soft]# mkdir scripts----------创建一个目录
[root@master soft]# cd scripts/
[root@master scripts]# touch stu.sql-------创建一个sql文件

[root@master scripts]# vim stu.sql --------编辑sql文件(在里面写sql语句)
select * from test1.students limit 5;

[root@master scripts]# hive -f stu.sql ----执行sql文件
执行结果:
1500100001	施笑槐	22	女	文科六班
1500100002	吕金鹏	24	男	文科六班
1500100003	单乐蕊	22	女	理科六班
1500100004	葛德曜	24	男	理科三班
1500100005	宣谷芹	22	女	理科五班

Hive 在 Linux 的 Shell 中的使用

第一种:
hive -e "后面直接加一条SQL"
hive -e "select * from test1.students limit 10"
第二种:
hive -f hql文件路径

将HQL写在一个文件里,再使用 -f 参数指定该文件

3、编辑 .sh 脚本文件

在shell脚本中获取Linux系统当前日期时间

time=$(date "+%Y-%m-%d %H:%M:%S")

sed -i "s/A/B/" 文件名 用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作

A -- 需要被修改的数据

B -- 修改内容

# 例如

# hql.sh文件  --  hive -e

#!/bin/sh
#date="2022-02-22"
date=$(date "+%Y-%m-%d")
sql1="select * from students_pt where pt='${date}'"
hive -e ${sql1}
echo $sql1

# hql.sh文件  --  hive -f

#!/bin/sh
#date="2022-02-22"
date=$(date "+%Y%m%d")
sed -i "s/!everydate!/${date}/" /usr/local/soft/scripts/stu_pt.sql
cat /usr/local/soft/scripts/stu_pt.sql
hive -f /usr/local/soft/scripts/stu_pt.sql
sed -i "s/${date}/!everydate!/" /usr/local/soft/scripts/stu_pt.sql
cat /usr/local/soft/scripts/stu_pt.sql


// stu_pt.sql  --  SQL文件
select	* from test1.students_pt1 where pt='!everydate!';

4、添加定时任务

具体内容参考shell编程学习笔记中的定时器

注意 xxx.sh 需要有可执行权限

添加执行权限 chmod a+x 文件名

通过crontab -e添加定时任务

:wq 即 添加 并 开启定时任务

// 将输出结果重定向
*(分) *(时) *(星期) *(几号) *(月份) /xxx.sh >> /xxx

// 例如 保存 :wq 即会开启定时任务
*/1 * * * * /usr/local/soft/scripts/hql.sh >> /usr/local/soft/scripts/logs/1
posted @ 2022-02-23 19:50  阿伟宝座  阅读(512)  评论(0)    收藏  举报