如何在oozie中为多个工作流指向集中位置

How to point centralized location for multiple workflows in oozie

我有超过 10 个 oozie 工作流程。每个 workflow.xml、coordinator.properties 和 xml 加上 lib 文件夹都在一个单独的文件夹中。所有工作流程都有一些大约 6mb 大小的通用 jar,我必须在每个 lib 文件夹中复制相同的 jar。你能告诉我最好的解决方案有一个共同的 jar 位置,这样我就不需要在每个工作流文件夹中复制相同的 jar 来执行 java 操作。

<action name="aggr_stage" retry-max="3" retry-interval="1">
    <java>
        <main-class>com.*.*.ReportGenerator</main-class>
        <arg>${reprocessing}</arg>
        <arg>${timeZone}</arg>
    </java>
    <ok to="notifyJobSuccess" />
    <error to="notifyJobFailure" />
</action>

在您的 oozie 操作中添加一个 <file> 标签。为每个操作引用相同的文件。
oozie docs

<action name="aggr_stage" retry-max="3" retry-interval="1">
    <java>
        <main-class>com.*.*.ReportGenerator</main-class>
        <arg>${reprocessing}</arg>
        <arg>${timeZone}</arg>
        <file>hdfs://<namenode>:<port>/<path-to-your-jar>/your-report-generator.jar</file>
    </java>
    <ok to="notifyJobSuccess" />
    <error to="notifyJobFailure" />
</action>

除了使用完整的 hdfs 路径之外,您还可以在文件标记中使用 workflow.xml 到该 jar 的相对路径来添加文件。
示例:../../your-report-generator.jar