支持将元组转换为PIG中的元素

时间:2016-03-28 17:25:36

标签: apache-pig

我有一个包含7个字段的关系,想要转换成下面的输出。

输入:

(x,y,10,z,20,a,30) ->(chararray,chararray,double,chararray,double,chararray,double)

输出应如下所示..

(x,y,10)
(x,z,20)
(x,a,30)

你能不能让任何人知道如何实现这个......

1 个答案:

答案 0 :(得分:1)

您使用了正确的功能TOBAG.TOBAG(*)表示在所有字段上应用TOBAG。 CONCAT需要转换为行的字段然后FLATTEN连接字段。

注意:对于少数字段使用double,因此您将看到小数精度,并且字段被加载为double。

A = LOAD 'test7.txt' USING PigStorage(',') AS (f1:chararray,f2:chararray,f3:double,f4:chararray,f5:double,f6:chararray,f7:double);
B = FOREACH A GENERATE f1,FLATTEN(TOBAG(CONCAT(f2,CONCAT(',',(chararray)f3)),CONCAT(f4,CONCAT(',',(chararray)f5)),CONCAT(f6,CONCAT(',',(chararray)f7))));
DUMP B;

Output