在Pig中使用自定义单词分隔符的WordCount?

时间:2012-04-04 07:42:19

标签: apache-pig

我是猪的新手,我正在尝试编写一个字数统计程序。

从文本中获取单词的一种方法是使用TOKENIZE函数:

WORDS = foreach INPUT generate flatten(TOKENIZE(text)) AS word;

但是我只想分裂空白,而TOKENIZE也会像逗号一样分裂。我该怎么做?我尝试使用STRSPLIT(text, ' '),但STRSPLIT似乎返回了一个元组而TOKENIZE返回了一个包,所以我不确定如何使用STRSPLIT来实现此目的。

2 个答案:

答案 0 :(得分:2)

这取决于您的输入数据是什么样的,但以下内容可能对您有用:

  1. 使用MyRegExLoader(在PiggyBank中)和正则表达式来加载数据。
  2. STREAM与Perl,sed或您喜欢的脚本语言结合使用,将您的输入数据转换为TOKENIZE随后将按您希望的方式处理的格式。
  3. 此外,可以将元组转换为ToBag的包(也在PiggyBank中)。

答案 1 :(得分:1)

我们实际上无法直接将元组转换为包(反之亦然)。我建议你这样做:

  1. 加载您的数据
  2. 使用STRSPLIT将您的值拆分为元组
  3. 将您的元组转换为带有UDF的包
  4. 压扁你的包