【问题标题】:Pig: add all chararrays in a relation to a single tuplePig:将关系中的所有字符数组添加到单个元组
【发布时间】:2014-07-30 19:12:56
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: hadoop mapreduce apache-pig


    【解决方案1】:

    您需要使用 GROUP ALL、FLATTEN 和名为 BagToTuple 的内置函数。

    请参阅下面的代码。

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

    现在 B 将在单个元组中包含标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      相关资源
      最近更新 更多