在猪如何连接袋中的所有物品?

时间:2014-01-14 01:55:15

标签: apache-pig

我有像

这样的结构
 {A, {1,2,3}}
 {B, {4,5,6}}

我想要的是

 {A, "1|2|3"}
 {B, "4|5|6"}
  • 我看了一下CONCAT操作员,但这无法帮助我实现我想要的目标。

1 个答案:

答案 0 :(得分:2)

使用Python UDF最容易实现。

<强> myudfs.py

#!/usr/bin/python

@outputSchema('concated: string')
def concat_bag(BAG):
    return '|'.join([ str(i) for i in BAG ])

可以像:

一样使用
Register 'myudfs.py' using jython as myfuncs;

-- Schema of A is: A:{ T:(letter: chararray, B_of_nums: {num: int}) }

B = FOREACH A GENERATE TOTUPLE(T.letter, myfuncs.concat_bag(T.B_of_nums)) ;

-- The output should be:
-- (A, 1|2|3)
-- (B, 1|2|3)