1

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

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

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

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

4

2 回答 2

2

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

  1. 使用带有正则表达式的MyRegExLoader(在 PiggyBank 中)来加载您的数据。
  2. STREAM与 Perl、sed 或您最喜欢的脚本语言一起使用,将您的输入数据转换为 TOKENIZE 将按照您想要的方式处理的格式。

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

于 2012-04-05T07:33:07.830 回答
1

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

  1. 加载您的数据
  2. 使用 STRSPLIT 将您的值拆分为一个元组
  3. 使用 UDF 将元组转换为包
  4. 压扁你的包
于 2012-04-04T14:15:09.093 回答