Pig:将所有chararrays添加到单个元组的关系中

时间:2014-07-30 19:12:56

标签: hadoop mapreduce apache-pig

我有一个包含标签列表的文本文件。在文件中,每个标记都存储在自己的行中。标签数量可变。

当我加载文本文件时,我会这样做:

tags_file = LOAD $list_of_tags AS (tag:chararray);

我想获取文件中的所有标记并将它们放在一个我将传递给UDF的元组中。 UDF将包含两个参数:(1)包含日志信息的包和(2)标签的元组。在UDF中,我将输出一个元组,其中包含每个标签出现在包含日志信息的包中的次数。

我想过使用像ToTuple之类的东西来生成标签的元组,但这并不起作用。

如何将chararray关系中的所有tags_file添加到我可以传递给UDF的单个元组中?

1 个答案:

答案 0 :(得分:2)

您需要使用GROUP ALL,FLATTEN和内置函数BagToTuple。

请参阅下面的代码。

A = GROUP tags_file ALL;
B = FOREACH A GENERATE FLATTEN(BagToTuple(tags_file));

现在B将在一个元组中有标记。