![](/img/trans.png)
[英]Need to pass Variable from Shell Action to Oozie Shell using Hive
[英]In oozie workflow (HUE), how to pass parameter from shell action to HDFS fs action
在我的工作流程中,我有一個 shell 操作和一個 HDFS fs 操作
殼牌行動回顯日期。 (日期=2016-10-06)
我想在 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>]
您需要連接兩個字符串以形成完整路徑。
String concat(String s1, String s2)
它返回 2 個字符串的連接。 具有空值的字符串被視為空字符串。
<mkdir path='concat(${nameNode}/user/kylin/, ${wf:actionData("shell-e424")["date"]})'/>
為了捕獲腳本或任何 Oozie 操作節點的輸出,您需要在節點定義的末尾使用<capture-output/>
標記。
來自 Oozie 文檔:
如果存在 capture-output 元素,則表示 Oozie 捕獲 shell 命令執行的 STDOUT 的輸出。 Shell 命令輸出必須是>Java 屬性文件格式,並且不得超過 2KB。 在 >workflow 定義中,Shell 操作節點的輸出可通過 >String action:output(String node, String key) 函數訪問(請參閱“4.2.6 >Action EL 函數”部分)。
有關 Shell 操作的 Oozie 文檔可以在此處找到語法和完整規范:http ://oozie.apache.org/docs/4.0.0/DG_ShellActionExtension.html
我遇到了同樣的情況,這很可能與 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.