2015-01-06 3 views
0

나는 돼지의 세계에 초보자이며 다음 시나리오를 구현해야합니다.돼지에서 이진 변수 생성

문제 : 돼지 스크립트 입력 : 임의의 관계는 우리가 B를 기반으로 바이너리 열을 생성해야

A B C 
    a1 b1 c1 
    a2 b2 c2 
    a1 b1 c3 

테이블

다음과 같이 말은, C는 나의 출력은 다음과 같을 것입니다.

누군가가 나에게 돼지에서이를 달성하는 방법을 알려 수

output 

    A B C B.b1 B.b2 C.c1 C.c2  C.c3 
    a1 b1 c1 1  0  1  0  0 
    a2 b2 c2 0  1  0  1  0 
    a1 b1 c3 1  0  0  0  1 
? 나는 이것이 R 스크립트를 사용하여 쉽게 달성 할 수 있다는 것을 알고 있지만 나의 요구 사항은 PIG를 통해 달성하는 것입니다.

귀하의 도움을 매우 높이 평가할 것입니다.

답변

0

시도해 볼 수 있습니까?

입력

a1  b1  c1 
a2  b2  c2 
a1  b1  c3 

PigScript :

X = LOAD 'input' USING PigStorage() AS (A:chararray,B:chararray,C:chararray); 
Y = FOREACH X GENERATE A,B,C, 
         ((B=='b1')?1:0) AS Bb1, 
         ((B=='b2')?1:0) AS Bb2, 
         ((C=='c1')?1:0) AS Cc1, 
         ((C=='c2')?1:0) AS Cc2, 
         ((C=='c3')?1:0) AS Cc3; 
DUMP Y; 

출력 : 내 경우에는

(a1,b1,c1,1,0,1,0,0) 
(a2,b2,c2,0,1,0,1,0) 
(a1,b1,c3,1,0,0,0,1) 
+0

값이 동적, 내가 모르는 어떤 값을 ~ 할 것이다. 거기에서 삼항 연산자는 내 유스 케이스에 맞지 않을 것이다. – user1432155

+0

AFAIK 동적 값은 돼지에 적합하지 않습니다. 나는이 문제를 해결할 다른 방법이 있는지 확신하지 못한다. 내가 분명히 몇 가지 해결책을 찾으면 나는 답장을 보낼 것이다. –