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



我是Pig的新手,正在尝试编写一个单词计数程序。

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

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

但我只想在空格上进行拆分,而TOKENIZE也在逗号之类的东西上进行拆分。我该怎么做?我尝试使用STRSPLIT(text, ' '),但STRSPLIT似乎返回一个元组,而TOKENIZE返回一个包,所以我不知道如何使用STRSPLIT

这取决于输入数据的外观,但以下内容可能适用于您:

  1. 使用MyRegExLoader(在PiggyBank中)和regex来加载数据
  2. 将STREAM与Perl、sed或您喜欢的脚本语言结合使用,将您的输入数据格式化为TOKENIZE将以您想要的方式处理的格式

此外,还可以使用ToBag(也在PiggyBank中)将元组转换为包。

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

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

最新更新