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