我的问题如下
emp = LOAD 'hdfs://master:9000/hrms/DimEmployee' AS (EmployeeID,OrganizationID,EmploymentType);
grouped = group emp by (OrganizationID, EmploymentType);
AggEmploymentType = FOREACH grouped GENERATE group.OrganizationID, group.EmploymentType,COUNT(emp.EmployeeID) as cnt;
DUMP AggEmploymentType;
下面是对上述pig查询的逐步描述。
从制表符分隔的hdfs文件加载100097条记录。
按记录按公司、员工状态分组
按employeeid统计记录。
转储输出。
在执行上述查询之后,pig shell说,成功读取了100115条记录。
在pig查询成功执行后,我得到以下三个问题:
为什么pig准备好了比hdfs中更多的记录(100115>100097)
为什么会出现警告消息“访问\u不存在\u字段27次”
在mysql中运行同一个groupby查询时,结果的计数差为9。
请尽快解决我的问题。我的Pig,hadoop项目取决于你的迅速React。由于上述问题,我在过去5天内一直感到震惊
1条答案
按热度按时间tf7tbtn21#
我不认为这是巧合,你正在加载额外的记录,你也得到访问不存在的字段错误。当您正在加载并且没有足够的列时,会显示不存在的字段错误。例如,如果看到以下行,则可能会出现错误:
hello,world
当你需要3列的时候。建议:另外需要注意的是
COUNT(x)
不计算为空的项。试着换掉COUNT(emp.EmployeeID)
与COUNT_STAR(emp.EmployeeID)
.COUNT_STAR
考虑空值。建议:当pig没有字段时,它会做的一件事就是在其中输入null。我建议你在测试前加一个过滤器
GROUP
这将删除具有空值的记录(也可能是“坏”记录)。