복붙노트

[HADOOP] 돼지의 단일 열 드롭

HADOOP

돼지의 단일 열 드롭

약 20 개의 ID 목록으로 표를 필터링하고 있습니다. 지금 내 코드는 다음과 같습니다.

A = LOAD 'ids.txt' USING PigStorage();
B = LOAD 'massive_table' USING PigStorage();
C = JOIN A BY $0, B BY $0;
D = FOREACH C GENERATE $1, $2, $3, $4, ...
STORE D INTO 'foo' USING PigStorage();

내가 싫어하는 것은 라인 D입니다. 여기서 새로운 테이블을 다시 생성하여 현재 원하는 (그리고 때로는 많은 컬럼입니다) 모든 다른 단일 컬럼을 명시 적으로 선언하여 결합 컬럼을 제거해야합니다. 나는 다음과 같은 것이 있는지 궁금합니다.

FILTER B BY $0 IN (A)

또는:

DROP $0 FROM C

해결법

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

    1.아마이 질문에 similiar-ish :

    아마이 질문에 similiar-ish :

    JIRA 티켓 (https://issues.apache.org/jira/browse/PIG-1693)을 참조하면 .. 표기법을 사용하여 나머지 필드를 모두 나타낼 수 있습니다.

    D = FOREACH C GENERATE $1 .. ;
    

    0.9.0+ PIG가 있다고 가정합니다.

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

    2.열 번호 5를 삭제하려면 다음과 같이 할 수 있습니다.

    열 번호 5를 삭제하려면 다음과 같이 할 수 있습니다.

    D = FOREACH C GENERATE .. $4, $6 .. ;
    

    열을 이름별로 놓으려는 경우, 제거 할 열의 이름 만 알면 가능하지 않습니다. 그러나이 열 바로 앞과 뒤의 열 이름을 알고있는 경우 가능합니다. colBeforeMyCol과 colAfterMyCol 사이에 열을 드롭하려면 다음과 같이 할 수 있습니다.

    aliasAfter = FOREACH aliasBefore GENERATE 
                 .. colBeforeMyCol, colAfterMyCol ..;
    
  3. from https://stackoverflow.com/questions/10835943/drop-single-column-in-pig by cc-by-sa and MIT license