我在许多子目录中有许多文件,所有文件都用逗号分隔。我想分组的第一个字段在每个文件和运行总记录计数
A = LOAD '/files/*' USING PigStorage(',') as (f1, f2, f3, f4, f5);
B = GROUP A ALL;
C = GROUP B BY f1;
D = FOREACH C GENERATE COUNT(f1) ;
DUMP D;
这个代码给了我一个错误
字段投影无效。架构中不存在投影字段[f1]:group:chararray,a:bag{:元组(f1:chararray,f2:bytearray,f3:bytearray,f4:bytearray,f5:bytearray)}。
2条答案
按热度按时间f4t66c6m1#
你不需要做什么
GROUP BY ALL
问题是你想在f1之前把b分组。b中不存在f1。试试看。
“全部分组”仅在要对整个数据集进行计数时使用。所有分组都应该非常小心地使用,因为如果不小心的话,所有数据都将在一个reduce任务中处理。
jdzmm42g2#
计数函数取包的名称,而不是字段的名称。应该是: