복붙노트

[HADOOP] Apache PIG에서 연산자와 같은 조건부 IF가 있습니까?

HADOOP

Apache PIG에서 연산자와 같은 조건부 IF가 있습니까?

사실 나는 PIG 스크립트를 작성 중이며 조건 중 하나가 만족되면 명령문 집합을 실행하려고합니다.

하나의 변수를 설정하고 해당 변수의 값을 확인했습니다. 가정 해보자.

if flag==0 then
  A = LOAD 'file' using PigStorage() as (f1:int, ....);
  B = ...;
  C = ....;
else 
  again some Pig Latin statements

PIG Script에서이 작업을 수행 할 수 있습니까? 그렇다면 어떻게해야합니까?

감사.

해결법

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

    1.그렇습니다, 돼지는 if-then-else 구조를 제공하지만, 묻는 방식에는 사용되지 않습니다.

    그렇습니다, 돼지는 if-then-else 구조를 제공하지만, 묻는 방식에는 사용되지 않습니다.

    돼지의 if-then-else는 다음과 같은 표현식의 일부로 약어 "condition? true_value : false_value"와 함께 호출되는 산술 연산자입니다.

    X = FOREACH A GENERATE f2, (f2==1?1:COUNT(B));
    

    이 작업을 수행하려면 이미 테이블 A를로드해야합니다. 전체 Pig 문에 대한 제어 흐름을 실행하려면 Fakrudeen이 제안한 것처럼 oozie와 같은 것이 필요합니다.

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

    2.돼지 스크립트 주위에 파이썬 래퍼를 만들 수 있습니다. 문서의 Embedded Pig를 참조하십시오.

    돼지 스크립트 주위에 파이썬 래퍼를 만들 수 있습니다. 문서의 Embedded Pig를 참조하십시오.

  3. ==============================

    3.돼지는 제어 흐름이 아닌 데이터 흐름 언어입니다. 가까이 오는 구조 만 PIG 분할이지만 매우 제한적입니다.

    돼지는 제어 흐름이 아닌 데이터 흐름 언어입니다. 가까이 오는 구조 만 PIG 분할이지만 매우 제한적입니다.

    두 개의 돼지 스크립트로 oozie와 그 의사 결정 구조를 사용할 수 있습니다.

  4. ==============================

    4.UDF (예 : Java)를 작성한 다음이를 PIG 스크립트에 임베드하십시오. UDF를 작성한 후에 생성 한 jar 파일을 '등록'해야합니다.

    UDF (예 : Java)를 작성한 다음이를 PIG 스크립트에 임베드하십시오. UDF를 작성한 후에 생성 한 jar 파일을 '등록'해야합니다.

    // (이와 비슷한 것), Java UDF 클래스가 UDFCondition이고 생성 된 jar 파일이 PigUDFCondition.jar이고 PIG 코드에 있다고 가정합니다.

    PigUDFCondition.jar 등록

    X = foreach A generate UDFCondition(..flag...)
    
  5. ==============================

    5.CASE 문은 버전 0.12부터 사용할 수 있습니다.

    CASE 문은 버전 0.12부터 사용할 수 있습니다.

  6. from https://stackoverflow.com/questions/17669522/is-there-any-conditional-if-like-operator-in-apache-pig by cc-by-sa and MIT license