定时执行spark-submit命令--Linux中使用crontab命令

时间:2022-02-14 08:10:15

项目部署时,一些批处理工作可能需要定时执行,如每天进行统计、每天清理系统垃圾、定期进行ETL工作等等都需要定时执行命令。在Linux中,定时通过spark-submit提交任务可使用crontab来实现。
1.安装crontab。CentOS系统并未自带crontab,可使用yum安装

yum install vixie-cron crontabs

2.将需要执行的spark-submit命令做成shell脚本。即创建sh文件,如sparkShell.sh文件,内容为:

#!/bin/bash
spark-submit /usr/zlp/wbfiveconnectins.jar > /usr/zlp/log1229.out

3.编辑crontab

crontab -e

随即进入vim界面,输入

 1 0 * * * . /etc/profile;/bin/sh /usr/zlp/sparkShell.sh

语义为:每天凌晨00:01执行此条命令
可通过crontab -l命令查看是否编辑成功
tips:需引入环境变量,因crontab的环境变量与系统不一致。
4.重启crond服务

service crond restart

5.引入环境变量两种方式,第一种如2所示,在命令中引入,还有一种方式则是在shell脚本文件中引入,则sparkShell.sh文件改为:

#!/bin/bash
source /etc/profile
spark-submit /usr/zlp/wbfiveconnectins.jar > /usr/zlp/log1229.out

且crontab -e中的命令改为:

 1 0 * * * . /usr/zlp/sparkShell.sh

这样既可避免定时执行失败的问题。
6.下面提供一些定时执行中关于时间调节的例子(从网上找的例子,留着备用):
1)每五分钟运行命令

      */5 * * * * . /home/XXXX.sh

2)每个工作日23:59都进行备份作业。

59 11 * * 1,2,3,4,5 . /home/XXXX.sh 

3 )每分钟运行一次命令

*/1 * * * * . /home/XXXX.sh

4)每个月的1号 14:10 运行

10 14 1 * * . /home/XXXX.sh