Oozie shell动作:exec和文件标签

时间:2016-01-27 07:19:56

标签: oozie

我是Oozie的新手,我读过一些Oozie shell动作示例,但这让我对某些事情感到困惑。

我见过的例子中没有<file>标记。

某些示例,如Cloudera here,在文件标记中重复shell脚本:

<shell xmlns="uri:oozie:shell-action:0.2">
    <exec>check-hour.sh</exec>
    <argument>${earthquakeMinThreshold}</argument>
    <file>check-hour.sh</file>
</shell>

Oozie's website中,写入shell脚本(来自job.properties的引用${EXEC},指向script.sh文件)两次,用#分隔。

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>${EXEC}</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>${EXEC}#${EXEC}</file>
</shell>

还有一些例子我见过路径(HDFS或本地?)位于script.sh#script.sh标记内的<file>之前。

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>script.sh</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>/path/script.sh#script.sh</file>
</shell>

据我所知,任何shell脚本文件都可以包含在工作流HDFS路径中(workflow.xml所在的路径)。

有人可以解释这些示例中的差异以及如何使用<exec><file>script.sh#script.sh/path/script.sh#script.sh吗?

1 个答案:

答案 0 :(得分:13)

<file>hdfs:///apps/duh/mystuff/check-hour.sh</file>表示&#34;将该HDFS文件下载到运行Oozie Launcher for Shell操作的YARN容器的当前工作目录中,默认情况下使用相同的文件名,以便我可以在&lt; exec&gt;中将其引用为./check-hour.sh或简称为check-hour.sh元素&#34;

<file>check-hour.sh</file>表示&#34;从我的用户家庭目录下载该HDFS文件,例如hdfs:///user/borat/check-hour.sh - 等等。&#34;

<file>hdfs:///apps/duh/mystuff/check-hour.sh#youpi</file>表示&#34;下载该HDFS文件等,将其重命名为youpi,以便我可以将其引用为./youpi或简称为{{元素中的1}}&#34;

请注意,Hue UI通常会插入不必要的youpi内容而不会更改实际名称。这就是为什么你会经常看到它的原因。