我有一个包含标签列表的文本文件。在文件中,每个标记都存储在自己的行中。标签数量可变。
当我加载文本文件时,我会这样做:
tags_file = LOAD $list_of_tags AS (tag:chararray);
我想获取文件中的所有标记并将它们放在一个我将传递给UDF的元组中。 UDF将包含两个参数:(1)包含日志信息的包和(2)标签的元组。在UDF中,我将输出一个元组,其中包含每个标签出现在包含日志信息的包中的次数。
我想过使用像ToTuple
之类的东西来生成标签的元组,但这并不起作用。
如何将chararray
关系中的所有tags_file
添加到我可以传递给UDF的单个元组中?
答案 0 :(得分:2)
您需要使用GROUP ALL,FLATTEN和内置函数BagToTuple。
请参阅下面的代码。
A = GROUP tags_file ALL;
B = FOREACH A GENERATE FLATTEN(BagToTuple(tags_file));
现在B将在一个元组中有标记。