Hadoop Pig为简单分组和计数发生任务抛出错误

Hadoop Pig为简单分组和计数发生任务抛出错误,hadoop,apache-pig,Hadoop,Apache Pig,使用Hadoop的PIG Latin从搜索引擎日志文件中查找唯一搜索字符串的出现次数。 请帮帮我。提前谢谢 猪字 excitelog = load '/user/hadoop/input/excite-small.log' using PigStorage() AS (encryptcode:chararray, numericid:int, searchstring:chararray); GroupBySear

使用Hadoop的PIG Latin从搜索引擎日志文件中查找唯一搜索字符串的出现次数。 请帮帮我。提前谢谢

猪字

excitelog = load '/user/hadoop/input/excite-small.log' using PigStorage() AS
(encryptcode:chararray, numericid:int, searchstring:chararray);                                        

GroupBySearchString = GROUP excitelog by searchstring;    

searchStrFrq = foreach GroupBySearchString Generate group as searchstring,count(searchstring);
遇到错误

 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve count using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]
您需要执行以下操作:

searchStrFrq = foreach GroupBySearchString Generate group as searchstring,
                                                COUNT(excitelog) as kount;
这是因为分组在pig中的工作方式,GroupBySearchString将是一个包含{group,excitelog}的包,其中excitelog本身就是一个包含与该组匹配的所有元组的包。COUNT是一个UDF,它接受一个包作为输入,并返回包中的元组数。因此,COUNTexcitelog将为您提供与组匹配的元组数。

您需要执行以下操作:

searchStrFrq = foreach GroupBySearchString Generate group as searchstring,
                                                COUNT(excitelog) as kount;

这是因为分组在pig中的工作方式,GroupBySearchString将是一个包含{group,excitelog}的包,其中excitelog本身就是一个包含与该组匹配的所有元组的包。COUNT是一个UDF,它接受一个包作为输入,并返回包中的元组数。因此,COUNTexcitelog将为您提供与组匹配的元组数。

函数名PigStorage和COUNT区分大小写。 因此,需要保持如下计数函数:

wordcount = FOREACH grouped GENERATE group , COUNT(words);

函数名、存储和计数区分大小写。 因此,需要保持如下计数函数:

wordcount = FOREACH grouped GENERATE group , COUNT(words);

在按照您的指示进行更改后仍会引发相同的错误。同时确保group as为小写,否则您将遇到错误:错误1025:架构中不存在投影字段[group]。在按照您的指示进行更改后仍会引发相同的错误。同时确保group as is lower case,否则您将遇到错误:错误1025:架构中不存在投影字段[GROUP]。