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

浙公网安备 33010602011771号