数据集详情如下:
ID,事件,年代,评级,持续时间
1,f1,1980,3.4,4200
2,f2,1960,4.2,7273
3,f3,1980,2.1,2721
4,f4,1960,3.5,7212
5,f5,1960,2.1,7786
你怎么能找到年份列表而不是。每年发生的事件?
我试过这个,但我不工作它显示架构错误
events = load 'event' using pigstorage ',' as (id:int, event:chararray, year:int, rating:float, duration:int);
list_of_years = group events by year;
no_of_events = foreach list_of_years generate count(moviename);
dump no._of_events;
答案 0 :(得分:1)
以下是答案:
首先,您的加载语句不正确:
events =使用 pigstorage'加载'event',' as(id:int,event:chararray,year:int,rating:float,duration:int); - 不正确
PigStorage是一个函数,正确的编写方式是PigStorage(',')
现在你的问题,
<强>输入强>
1,f1,1980,3.4,4200 2,f2,1960,4.2,7273 3,f3,1980,2.1,2721 4,f4,1960,3.5,7212 5,f5,1960,2.1,7786
猪脚本
//使用正确的语法和分隔符加载数据。
events = load'stack_case001.txt'使用PigStorage(',')as(id:int,event:chararray,year:int,rating:float,duration:int);
//按年度对数据进行分组
list_of_years =按年份分组事件;
//通过迭代分组数据并计算与分组实体对应的项目数来计算每年的事件数。
number_of_events_per_year = FOREACH list_of_years GENERATE组,COUNT($ 1);
//在屏幕上打印输出。
DUMP number_of_events_per_year;
<强>输出强>
(1960,3)
(1980,2)
希望它有所帮助。