在我的工作流程,我有一个外壳程序操作和HDFS FS行动
<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>]
您需要连接两个字符串,以形成完整的路径。
String concat(String s1, String s2)
它返回2个字符串的连接。与空值的字符串被认为是一个空字符串。
<mkdir path='concat(${nameNode}/user/kylin/, ${wf:actionData("shell-e424")["date"]})'/>
为了捕获从您的脚本或任何Oozie的动作节点的输出,你需要利用<capture-output/>
标签在您的节点定义的结尾。
从Oozie的文档:
如果捕获输出元件存在时,它指示了Oozie捕捉输出>壳命令执行的STDOUT的。 shell命令的输出必须>在Java属性文件格式,它不能超过2KB。从>工作流定义内,一个壳动作节点的输出是经由>字符串动作来访问:输出(字符串节点,String键)功能(请参见“4.2.6>动作EL功能”)。
语法和完整的规范可以在Oozie的文档,这里壳牌行动上找到:http://oozie.apache.org/docs/4.0.0/DG_ShellActionExtension.html