我是Pig的新手,正在尝试编写一个单词计数程序。
从文本中获取单词的一种方法是使用TOKENIZE
函数:
WORDS = foreach INPUT generate flatten(TOKENIZE(text)) AS word;
但我只想在空格上进行拆分,而TOKENIZE
也在逗号之类的东西上进行拆分。我该怎么做?我尝试使用STRSPLIT(text, ' ')
,但STRSPLIT
似乎返回一个元组,而TOKENIZE
返回一个包,所以我不知道如何使用STRSPLIT
。
这取决于输入数据的外观,但以下内容可能适用于您:
- 使用MyRegExLoader(在PiggyBank中)和regex来加载数据
- 将STREAM与Perl、sed或您喜欢的脚本语言结合使用,将您的输入数据格式化为TOKENIZE将以您想要的方式处理的格式
此外,还可以使用ToBag(也在PiggyBank中)将元组转换为包。
我们实际上不能直接将元组转换为包(反之亦然)。我建议你这样做:
- 加载您的数据
- 使用STRSPLIT将您的值拆分为元组
- 将元组转换为带有UDF的包
- 压扁你的包