2

我想为历史日期运行 oozie 协调器,并将日期作为参数传递给工作流中的脚本。我怎么做?

我可以将开始日期设置为旧日期吗?它会赶上吗?以及我应该添加什么频率。

4

1 回答 1

3

是的,当您提交一个过去开始日期的协调员时,它会赶上。它立即开始执行,因此设置 concurrency=1 可以使您的集群免于繁重的负载。如果要先处理新文件,还可以设置 execution=LIFO。有关更多信息,请查看http://oozie.apache.org/docs/3.3.2/CoordinatorFunctionalSpec.html

我正在从如何使用 oozie 安排 sqoop 操作的答案中发布修改后的示例

创建 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
于 2013-08-15T19:24:03.223 回答