簡體   English   中英

在 oozie 工作流(HUE)中,如何將參數從 shell 動作傳遞到 HDFS fs 動作

[英]In oozie workflow (HUE), how to pass parameter from shell action to HDFS fs action

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

  1. 殼牌行動回顯日期。 (日期=2016-10-06)

  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>

我收到以下錯誤。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM