我创造了一份工作,我每60分钟使用oozie来运行它。但是,我想在特定时间跳过工作的执行。可以说,我的工作从早上10点到晚上7点。我想在下午2点和下午4点跳过工作。如何配置这些值?
这是我的job.properties文件的片段
nameNode=hdfs://localhost:8020
jobTracker=localhost:8032
jobName=MyJob
userName=${user.name}
oozie.coord.application.path=${nameNode}/user/${userName}/oozie/${jobName}
appPath=${oozie.coord.application.path}
oozie.libpath=/lib
oozie.use.system.libpath=true
timezone=UTC
start=2015-09-01T01:00Z
end=2015-09-04T02:00Z
以下是我的coordinator.xml文件的片段
<coordinator-app name="${jobName}" frequency="${jobFrequency}"
start="${start}" end="${end}" timezone="${timezone}" xmlns="uri:oozie:coordinator:0.4">
<controls>
<timeout>${timeout}</timeout>
<concurrency>1</concurrency>
<throttle>1</throttle>
</controls>
</coordinator-app>
这个工作从每月的第1个到第4个每小时运行一次。如何在特定时间跳过作业执行?我可以通过某种方式对其进行配置吗?我使用此页面作为参考。 http://www.dummies.com/how-to/content/scheduling-and-coordinating-oozie-workflows-in-had.html
答案 0 :(得分:0)
您可以尝试使用Decision Control Node
跳过某些执行。可以根据coord:nominalTime()
:
coordinator.xml中的协调员操作:
<action>
<workflow>
...
<configuration>
<property>
<name>nominalHour</name>
<value>${coord:formatTime(coord:nominalTime(), 'HH')}</value>
</property>
</configuration>
</workflow>
</action>
workflow.xml中的决策控制节点:
...
<decision name="need-run">
<switch>
<case to="skip-run">${nominalHour eq '14'}</case>
<case to="skip-run">${nominalHour eq '16'}</case>
<default to="run-my-job"/>
</switch>
</decision>
...