2017-04-12 60 views
0

我试图找出用户的年龄是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柱需要从一个关系预计它被用作标

回答

2

你要算filteredvalues而不是分组。

total = foreach grouped generate COUNT(filteredvalues); 
+0

谢谢,它的工作。为什么我们在做it.You – subhrendu

+0

@subhrendu分组上filteredvalues计数,而不是组与元组(filtervalues)包你能简要说明计数每袋(集团)itself.If你组的元组,但不包通过特定的字段/域,你会得到多个袋子在它的元组,然后你得到每个group.In这种情况下,统计数据,我们指望所有的,因此只有1组。 –

+0

谢谢。了解 – subhrendu

1

样品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柱需要被投影从关系 为它被用作标量”