在 Pig Latin 中生成计数值

Generate count value in Pig Latin

我想找出年龄在 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);

我收到以下错误“标量投影无效:已分组:需要从关系投影列才能用作标量

您必须计算过滤后的值而不是分组。

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;

Always count is performed before group relation or bag otherwise it throws: "Invalid scalar projection: grouped : A column needs to be projected from a relation for it to be used as a scalar"