在工作流Oozie的(HUE),如何从壳动作参数传递到HDFS fs的动作

问题描述 投票:1回答:2

在我的工作流程,我有一个外壳程序操作和HDFS FS行动

  1. 壳牌行动回声日期。 (日期= 2016年10月6日)
  2. 我想设置在HDFS FS行动的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>]
shell hadoop hdfs oozie hue
2个回答
0
投票

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

String concat(String s1, String s2)

它返回2个字符串的连接。与空值的字符串被认为是一个空字符串。

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

0
投票

为了捕获从您的脚本或任何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

© www.soinside.com 2019 - 2024. All rights reserved.