2017-04-01 43 views
0

我有一些数据与4个值的目标,我希望其中三个成为使用拉丁猪一个单一的一部分。如何转换目标值与猪?

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,如果真有你想要的值来替换它,在这种情况下,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

谢谢inquisitive_mind! – Javi

+0

如果这个目标是chararray而不是int,那么还有一个问题。二进制运算符可以使用,还是仅用于数值运算,我应该使用另一个运算符吗?当然,会改变负载的尖锐,以及chararray。 – Javi

+0

您也可以将它用于chararray。在这种情况下,您将无法检查>。您将不得不检查“2”,“3”,“4”。 –