0

필자는 먼저 HDFS 위치에 파일이 존재하는지 여부를 확인해야합니다.OOZIE 결정 노드에서 논리 연산자를 사용하는 방법은 무엇입니까?

파일이 존재하면 200 바이트보다 큰 파일의 크기를 테스트해야합니다.

두 결과를 모두 기반으로 사용자에게 이메일 알림을 보내야합니다.

나는 존재 여부를 내가에 대한 작업 흐름을 만들어야 코드 아래

${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>