Apache Pig:将元组包转换为单元组

时间:2014-11-23 13:52:43

标签: hadoop apache-pig

我试图将一袋tupples转换成一个tupple:

grunt> describe B;
B: {Comment: {tuple_of_tokens: (token: chararray)}}

grunt> dump B;
({(10),(123),(1234)})

我想从B获得(10,123,1234)。我已经尝试过使用FLATTEN但是这为包中的每个tupple提供了一个新的线,这不是我想要的。 有没有办法在不进入UDF的情况下进行此转换?

提前致谢!

1 个答案:

答案 0 :(得分:1)

BagToTuple()函数已在piggybank中可用,您只需下载pig-0.11.0.jar并将其设置在类路径中。为此,您无需编写任何UDF代码。

从此链接下载jar:
http://www.java2s.com/Code/Jar/p/Downloadpig0110jar.htm

<强>参考:
    https://pig.apache.org/docs/r0.12.0/api/org/apache/pig/builtin/BagToTuple.html

示例:
input.txt中

{(10),(123),(1234)}
{(4),(5)}

<强> Pigscript:

    A= LOAD 'input.txt' USING PigStorage() AS (b:{t:(f1)});
    B = FOREACH A GENERATE FLATTEN(BagToTuple(b));
    DUMP B;

<强>输出:

(10,123,1234)
(4,5)