我有一列使用Pig加载的字符串:
A
B
C
D
如何将此列转换为单个字符串?
A,B,C,D
答案 0 :(得分:0)
您必须先将GROUP ALL
放入一个包中,然后使用UDF将包的内容连接在一起。像这样:
-- myudfs.py
-- #!/usr/bin/python
--
-- @outputSchema('concated: string')
-- def concat_bag(BAG):
-- return ','.join(BAG)
Register 'myudfs.py' using jython as myfuncs;
A = LOAD 'myfile.txt' AS (letter:chararray) ;
B = GROUP A ALL ;
C = FOREACH B GENERATE myfuncs.concat_bag(A.letter) AS all_letters ;
如果您的文件/架构包含多个列,您可能希望将要生成字符串的列投影出来。类似的东西:
A0 = LOAD 'myfile.txt' AS (letter:chararray, val:int, extra:chararray) ;
A = FOREACH A0 GENERATE letter ;
这样你就不会留下额外的列,这会减慢已经很昂贵的操作。