生成计数值
问题描述:
我试图找出用户的年龄是19和60之间下面的数量是样本查询生成计数值
loadtable = load '/user/userdetails.txt' using PigStorage(',') AS (name:chararray,age:int);
filteredvalues = filter loadtable by (age > 19 AND age < 60);
grouped = GROUP filteredvalues ALL;
count = foreach grouped generate COUNT(grouped);
我收到以下错误“无效标投影:分组:A柱需要从一个关系预计它被用作标“
答
你要算filteredvalues而不是分组。
total = foreach grouped generate COUNT(filteredvalues);
答
样品userdetails.txt:
Robin,85
BOB,55
Maya,23
Sara,45
David,23
Maggy,22
Robert,75
Syam,23
Mary,25
Saran,17
Stacy,19
Kelly,22
代码:
grunt> loadtable = load '/user/userdetails.txt' using PigStorage(',') AS (name:chararray,age:int);
grunt> filteredvalues = filter loadtable by (age > 19 AND age < 60);
grunt> grouped = GROUP filteredvalues ALL;
grunt> count = foreach grouped generate COUNT(filteredvalues);
grunt> dump count;
始终算为p群关系或袋之前erformed否则它抛出: “无效标量投影:分组:A柱需要被投影从关系 为它被用作标量”
谢谢,它的工作。为什么我们在做it.You – subhrendu
@subhrendu分组上filteredvalues计数,而不是组与元组(filtervalues)包你能简要说明计数每袋(集团)itself.If你组的元组,但不包通过特定的字段/域,你会得到多个袋子在它的元组,然后你得到每个group.In这种情况下,统计数据,我们指望所有的,因此只有1组。 –
谢谢。了解 – subhrendu