注意脚本放的目录和权限
hive -e "sql语句"
hive -f file(sql.txt)
crontab -e 里面的脚本命令要写绝对命令
crontab -e //编辑
crontab -l //查看
crontab -r //删除
hql脚本编写的注意点
1、写好sh脚本 然后利用Crontab -e 进行部署,00 11 * * * /home/dir/baidu_update_data.sh > /file.log 2>$1类似于之中格式, * * * * * 分别代表 分/时/日/月/周,后面需要追加一个日志文件定向,不然的话,你不了解脚本执行情况,建议用sh和全路径,上面的脚本就是在每天的11点启动;然后日志在file.log 文件里面,最好和sh放同一路径下面,方便检查执行情况;
2、一定要给脚本执行权限,一定要给脚本执行权限 chmod +x file ,不然跑不了,或者 chmod 777 file,给文件全部权限;初用者很容易遗忘这一点
3、/bin/bash^M: bad interpreter: No such file or directory 日常报错
报错的原因是:在Windos下与Linux下编辑,格式会有差异,Windows上传的东西,导致格式变了,所以只需要改一下格式
vi filename
:set ff=unix
:wq
即可,应该就可以执行了
4:Could not open input file for reading 报错:注意脚本放的目录和权限,被坑了好久,最好放hive目录下你自己新建的文件中。
5、观察执行成功是否,需要看日志;日志非常重要!!!
实例:
(1)建立一个test.hsql脚本,里面写入清空表的语句
TRUNCATE TABLE data.fact_teacher_info_stunum;
TRUNCATE TABLE data.fact_teacher_student_info;
TRUNCATE TABLE data.xhschool_clazzmembers;
TRUNCATE TABLE data.xhschool_clazzes
使用crontab -e 进行脚本调度即可
* * * * * /opt/sxt/hive-1.2.1/bin/hive -f /big_data/test.hsq >/dev/null 2>&1
(2)或者创建一个test.sh脚本
#!/bin/bash
hive<
TRUNCATE TABLE data.fact_teacher_info_stunum;
TRUNCATE TABLE data.fact_teacher_student_info;
TRUNCATE TABLE data.xhschool_clazzmembers;
TRUNCATE TABLE data.xhschool_clazzes;
EOF
通过crontab -e 进行脚本任务调度
30 06 * * * /big_data/test.sh >/dev/null 2>&1
也可以在里面写入其他操作hive的语句