在oozie工作流程(HUE)中,如何将参数从shell操作传递到HDFS fs action

时间:2016-10-05 20:49:55

标签: shell hadoop hdfs oozie hue

在我的工作流程中,我有一个shell操作和一个HDFS fs操作

  1. Shell动作回声日期。 (日期= 2016年10月6日)

  2. 我想在HDFS fs action mkdir路径中设置上述日期参数。以下是行动定义。

    <action name="fs-a347">
        <fs>
        <mkdir path='${nameNode}/user/kylin/${wf:actionData("shell-e424")["date"]}'/>
        </fs>
        <ok to="End"/>
        <error to="Kill"/>
    </action>
    
  3. 我收到以下错误。

    EL_ERROR    Encountered "&", expected one of [<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", ")", "-", "not", "!", "empty", <IDENTIFIER>]
    

3 个答案:

答案 0 :(得分:0)

您需要连接两个字符串以形成完整路径。

String concat(String s1, String s2)

它返回2个字符串的串联。具有null值的字符串被视为空字符串。

<mkdir path='concat(${nameNode}/user/kylin/, ${wf:actionData("shell-e424")["date"]})'/>

答案 1 :(得分:0)

为了捕获脚本或任何Oozie操作节点的输出,您需要在节点定义的末尾使用<capture-output/>标记。

来自Oozie文档:

  

如果存在capture-output元素,则表示Oozie捕获shell命令执行的STDOUT的输出&gt;。 Shell命令输出必须是> Java属性文件格式,且不得超过2KB。在&gt;工作流定义中,可以通过&gt; String action:output(String node,String key)函数访问Shell操作节点的输出(请参阅&#39; 4.2.6&gt; Action EL Functions&# 39。)

语法和完整规范可在此处的Shell操作的Oozie文档中找到:http://oozie.apache.org/docs/4.0.0/DG_ShellActionExtension.html

答案 2 :(得分:0)

我遇到了同样的情况,这最有可能是因为XML解析与wf:actionData()EL函数交互时的变化。而不是对地图使用双引号,而是将其交换为单引号,如下所示:

<action name="fs-a347">
    <fs>
        <mkdir path="${nameNode}/user/kylin/${wf:actionData('shell-e424')['date']}"/>
    </fs>
    <ok to="End"/>
    <error to="Kill"/>
</action>