我想为历史日期运行oozie协调器,并将日期作为参数传递给工作流中的脚本。我该怎么做?
我可以将开始日期作为旧日期吗?它会赶上吗?我应该添加多少频率。
答案 0 :(得分:2)
是的,当您提交过去的开始日期的协调员时,它会赶上。它立即开始执行,因此设置concurrency = 1可以使您的集群免于负载过重。如果要先处理新文件,也可以设置execution = LIFO。有关详情,请查看http://oozie.apache.org/docs/3.3.2/CoordinatorFunctionalSpec.html
我正在从How to schedule a sqoop action using oozie
的答案中发布修改后的样本创建coordinator.xml文件:
<coordinator-app name="sample-coord" xmlns="uri:oozie:coordinator:0.2"
frequency="${coord:days(7)}"
start="${start}"
end= "${end}"
timezone="America/New_York">
<controls>
<timeout>${timeout}</timeout>
<concurrency>1</concurrency>
</controls>
<datasets>
<dataset name="data"
frequency="${coord:days(7)}"
initial-instance="${start}" timezone="America/New_York">
<uri-template>${data_path}/${YEAR}/${MONTH}/${DAY}</uri-template>
<done-flag/>
</dataset>
</datasets>
<input-events>
<data-in name="data_in" dataset="data">
<instance>${coord:current(0)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${wf_application_path}</app-path>
<configuration>
<property>
<name>input</name>
<value>${coord:dataIn('data_in')}</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>
在coordinator.properties中指定上述文件中使用的所有属性:
host=namenode01
nameNode=hdfs://${host}:8020
wf_application_path=${nameNode}/oozie/deployments/example
oozie.coord.application.path=${wf_application_path}
data_path=${nameNode}/data
start=2013-08-01T01:00Z
end=2013-08-19T23:59Z
timeout=10
将您的coordinator.xml文件上传到hdfs,然后使用类似
的内容提交您的协调员作业oozie job -config coordinator.properties -run