2017-04-01 6 views
0

대상 값이 4 개인 데이터가 몇 개 있으며이 중 3 개를 라틴 돼지를 사용하여 하나의 단일 부분으로 만들고 싶습니다.돼지와 목표 값을 변환하는 방법은 무엇입니까?

Input:      Output: 
ID  | Target   ID  | Target  
-----------------   ----------------- 
test1  1    test1  1 
test2  1    test2  1 
test3  2    test3  2 
test4  2    test4  2 
test5  3    test5  2 
test6  4    test6  2 
test7  2    test7  2 

누군가가 그것을 할 수있는 가장 좋은 방법을 알고

+0

세 값은 2가되어야합니까? –

+0

모든 값 2, 3, 4는 2와 같습니다. – Javi

답변

0

사용 Bincond 1보다 크고 true의 경우는 것이이 경우에, 당신이 원하는 값으로 교체 목표 값을 확인 2.

A = LOAD 'data.txt' USING PigStorage('\t') AS (Id:chararray,target:int); 
B = FOREACH A GENERATE Id,(target > 1 ? 2 : target); 
DUMP B; 
+0

감사의 뜻! – Javi

+0

한 가지 더 질문하십시오. 대상이 int가 아닌 chararray 인 경우. bincond 연산자를 사용할 수 있습니까? 아니면 수치 연산 뿐이며 다른 연산자를 사용해야합니까? 물론로드의 squema를 변경하여 chararray로 변경합니다. – Javi

+0

chararray에도 사용할 수 있습니다.이 경우>를 확인할 수 없으며 "2", "3", "4"를 확인해야합니다. –