我有数据
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
答案 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(你的元组))