我有一个无限循环的java程序,我想在一个特定的时间启动,两个小时后也会终止,我可以启动这个程序,它会一直运行,直到我手动终止它,在oozie(hue)有没有一种方法可以定期启动和终止作业?
mbzjlibv1#
如果你能找到一种方法用一个shell脚本(从任意节点)杀死这个动作,你应该可以使用oozie shell动作来杀死它。话虽如此,这里的出路似乎是:将endtime传递给循环(或循环的 Package 器)
4sup72z82#
有一个 <timeout> oozie协调器中的选项。。。但这个名称令人困惑:实际上,这个选项并不适用于正在运行的作业。我为一个类似的需求使用了一个变通方法:告诉程序什么时候应该停止!在协调器中,生成一个工作流参数,其中包含执行所需的结束时间,例如“标称开始时间+55分钟”,即。 ${coord:formatTime(coord:dateOffset(coord:nominalTime(), 55, 'MINUTE'), 'yyyy-MM-dd HH:mm:ss z')} 在工作流中,将该参数作为参数传递给java程序在java程序中,找到一种实现所需的结束时间参数的方法——即,如果运行无限循环,那么 break 当当前时间超过限制时,否则用一个指定的线程派生一个无限循环 System.exit() 等等。
<timeout>
${coord:formatTime(coord:dateOffset(coord:nominalTime(), 55, 'MINUTE'), 'yyyy-MM-dd HH:mm:ss z')}
break
System.exit()
2条答案
按热度按时间mbzjlibv1#
如果你能找到一种方法用一个shell脚本(从任意节点)杀死这个动作,你应该可以使用oozie shell动作来杀死它。
话虽如此,这里的出路似乎是:
将endtime传递给循环(或循环的 Package 器)
4sup72z82#
有一个
<timeout>
oozie协调器中的选项。。。但这个名称令人困惑:实际上,这个选项并不适用于正在运行的作业。我为一个类似的需求使用了一个变通方法:告诉程序什么时候应该停止!
在协调器中,生成一个工作流参数,其中包含执行所需的结束时间,例如“标称开始时间+55分钟”,即。
${coord:formatTime(coord:dateOffset(coord:nominalTime(), 55, 'MINUTE'), 'yyyy-MM-dd HH:mm:ss z')}
在工作流中,将该参数作为参数传递给java程序在java程序中,找到一种实现所需的结束时间参数的方法——即,如果运行无限循环,那么
break
当当前时间超过限制时,否则用一个指定的线程派生一个无限循环System.exit()
等等。