복붙노트

[HADOOP] OOZIE 워크 플로에서 논리 연산자를 사용하는 방법

HADOOP

OOZIE 워크 플로에서 논리 연산자를 사용하는 방법

나는 우기 워크 플로우가있다. 내가 결정 제어 노드를 사용하여 술어에서 "&&"두 가지 다른 조건을 원합니다. 그리고 나는 그들 사이에 "&&"를 사용하여 최종 TRUE / FALSE 결과를 얻어야합니다.

그런 조건에 대한 술어 구문을 찾지 못합니다.

이걸 사용하는 메신저

 <decision name="comboDecision">
        <switch>
            <case to="alpha">
              ---------
            </case>
        </switch>
  </decision>

나는 이것을 원한다. =

<decision name="comboDecision">
        <switch>
            <case to="alpha">
             condition1 && condition2
            </case>
        </switch>
  </decision>

누구든지 구문을 도와 줄 수 있습니까?

해결법

  1. ==============================

    1.이것을 예제로 설명하겠습니다.

    이것을 예제로 설명하겠습니다.

    사람의 나이를 출력하는 Java 액션이 있다고 가정 해 봅니다 (이 액션을 getAgeInfo라고 부름).

    'person.age': Age of the person
    

    액션 :

    <action name='getAgeInfo'> 
        <!--Outputs 1 property: person.age: returns age of the person--> 
        <java> 
            ..........
        </java> 
        <ok to="makeClassification" /> 
        <error to="fail" /> 
    </action>
    

    다음 작업은 make_Classification입니다. make_Classification 작업에서 우리는 사람의 나이를 기준으로 사람을 "아동", "십대", "중년"또는 "고령자"로 분류합니다.

    예 : 사람의 나이가 12 세 이상인 경우 20 세 미만으로 분류하여 십대 행동으로 전환합니다.

    다음은 "and"를 사용하는 switch 문입니다.

    <decision name="makeClassification"> 
        <switch> 
            <case to="child"> 
                ${wf:actionData('getAgeInfo')['person.age'] gt 0 &&
                  wf:actionData('getAgeInfo')['person.age'] lt 12} 
            </case> 
            <case to="teenager"> 
                ${wf:actionData('getAgeInfo')['person.age'] ge 12 && 
                  wf:actionData('getAgeInfo')['person.age'] lt 20} 
            </case> 
            <case to="mid-aged"> 
                ${wf:actionData('getAgeInfo')['person.age'] ge 20 && 
                  wf:actionData('getAgeInfo')['person.age'] lt 50} 
            </case> 
            <case to="senior-citizen"> 
                ${wf:actionData('getAgeInfo')['person.age'] ge 50} 
            </case> 
            <default to="error"/> 
        </switch> 
    </decision>
    

    gt (greater보다 큼), lt (less than), 논리 (||), 논리 및 (&&)의 사용법을 보여주는 예제 Oozie by Example을 볼 수 있습니다.

  2. ==============================

    2.EL 함수 / 표현식은 JSP 표현식 언어 구문을 사용합니다. oozie의 문서에서

    EL 함수 / 표현식은 JSP 표현식 언어 구문을 사용합니다. oozie의 문서에서

    JSP 2.0 사양을 확인하여 구문을 확인할 수 있습니다.

    특히 귀하의 질문에 대한 대답은 :

    <decision name="comboDecision">
        <switch>
            <case to="alpha">${(condition1) and (condition2)}</case>
            <default to="end"/>
        </switch>
    </decision>
    
  3. from https://stackoverflow.com/questions/33957236/how-to-use-logical-operators-in-oozie-workflow by cc-by-sa and MIT license