在我的工作流程中,我有一个shell操作和一个HDFS fs操作
Shell动作回声日期。 (日期= 2016年10月6日)
我想在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>
我收到以下错误。
EL_ERROR Encountered "&", expected one of [<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", ")", "-", "not", "!", "empty", <IDENTIFIER>]
答案 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>