如何将元组转换为猪的字符串?

时间:2014-08-18 16:16:42

标签: apache-pig

我有数据

id company
1  (a,b)
2  (a,c)
3  (f,g,h)

公司是元组,我是从BagToTuple(sortedbag.company) AS company生成的。

我想删除元组的格式,我希望数据看起来如下:

id company
1  a b
2  a c
3  f g h

我希望公司专栏没有括号,并按空格分隔。感谢。

===================更新

我将数据设置为

id company
1  a
1  b
1  a
2  c
2  a

我编写的代码如下: record = load ....

grp = GROUP record BY id; 

newdata = FOREACH grp GENERATE group AS id, 
        COUNT(record) AS counts, 
        BagToTuple(record.company) AS company;

输出如下:

id count company
1  3     (a,b,a)
2  2     (c,a)

但我希望公司可以分类和区分,没有括号,并按空格划分。 我期望的结果如下:

id count company
1  3     a b
2  2     a c

3 个答案:

答案 0 :(得分:1)

我认为你可以在最后一步用BagToString替换BagToTuple:

newdata2 = FOREACH grp 
GENERATE group AS id, COUNT(record) as counts, 
    BagToString(record.company, ' ') as company:chararray;

STORE newdata2 into outdir using PigStorage('#');

脚本运行后

$ cat outdir2/part-r-00000
1#3#a b a
2#2#a c

答案 1 :(得分:0)

您可以使用内置的FLATTEN()运算符。 http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#Flatten+Operator

答案 2 :(得分:0)

对于一般元组来说,如果你不想要UDF,你可以做BagToString(TOBAG(你的元组))