0

私は最初に必要なことがあります、私はファイルが存在するかどうかを確認する必要があります与えられたHDFSの場所です。OOZIE決定ノードで論理演算子を使用する方法は?

ファイルが存在する場合は、200バイトを超えるファイルのサイズをテストする必要があります。

両方の結果に基づいて、私はユーザーに電子メール通知を送信する必要があります。

Iが存在しないか、ではない私は、私はにワークフローを作成する必要がありますコードの下

${fs:fileSize("/user/cloudera/trdat/test.txt") gt 200 * B} 

の助けを借りてファイルサイズを確認することができますコードの下

${fs:exists("/user/cloudera/trdat/test.txt")} 

の助けを借りてファイルを確認することができますチェックファイルが存在しない場合は存在しない場合は、電子メール通知"file is not exist"を送信してください。

存在する場合は、ファイルサイズが200バイトを超えているかどうかを確認する必要があります。もしそうでなければ、そのメッセージのような"file is exist but no data"のような電子メール通知を送る必要があります。

私にこれを手伝ってください。

この場合、論理演算子(& &、||)の使用方法は?

このシナリオをどのように処理するか?

+0

[OOZIEワークフローで論理演算子を使用する方法]の可能な重複(http://stackoverflow.com/questions/33957236/how-to-use -logical-operators-in-oozie-workflow) – YoungHobbit

+0

あなたの質問は非常に混乱しており、明らかにそうです。 3つの異なるケースがあり、明確な優先順位があります。したがって、3つのブランチを持つ決定が必要です。 "SendMailAが存在しない場合はgoto SendMailBが小さすぎる場合はgoto end"に進みます。その場合、オペレータやオペレータは必要ありません。 –

+0

@YoungHobbit、Samson Scharfrichter、ありがとうございました。私は解決策を得た –

答えて

0

まず、ファイルが存在するかどうかを判断する必要があります。

デフォルトファイルが存在しない場合は、通知がありません。

ファイルが存在する場合のみ、ファイルのサイズを確認する必要があります。

ファイルサイズが指定されたサイズより小さい場合、失敗通知のみを送信する必要があります。

以下のヘルプコードで、上記の機能を達成できます。

<decision name="decision1"> 
     <switch> 
     <case to="day0"> 
      ${fs:exists("/user/cloudera/trdat/test.txt")} 
     </case> 
     <default to="FileMissing" /> 
     </switch> 
    </decision> 

<action name="day0"> 
    <email xmlns="uri:oozie:email-action:0.1"> 
    <to>......</to> 
    <subject>.....</subject> 
    </email> 
    <ok to="decision2"/> 
    <error to="end"/> 
</action> 

<action name="FileMissing"> 
................................ 
</action> 

<decision name="decision2"> 
     <switch> 
     <case to="day1"> 
     ${fs:fileSize("/user/cloudera/trdat/test.txt") gt 200 * B} 
     </case> 
     <default to="DATAMissing" /> 
     </switch> 
    </decision> 
    <action name="day1"> 
    <email xmlns="uri:oozie:email-action:0.1"> 
    <to>......</to> 
    <subject>.....</subject> 
    </email> 
    <ok to="Ok"/> 
    <error to="end"/> 
</action> 

<action name="DATAMissing"> 
................................ 
</action> 
0

oozie EL関数/式は、JSP式言語構文を使用しています。 from oozie's doc

JSP 2.0 specificationを確認して構文を確認できます。具体的にあなたの質問のために、答えは

<decision name="node_name"> 
    <switch> 
    <case to="node_1"> 
     ${(fs:exists("/user/cloudera/trdat/test.txt")) 
     and 
     (fs:fileSize("/user/cloudera/trdat/test.txt") gt 200 * B)} 
    /case> 
    <default to="end"/> 
    </switch> 
</decision> 
関連する問題