Hadoop 使用pig查找每年发生的事件的年份和数量列表
数据集详细信息如下: id、事件、年份、等级、持续时间 1980年11月1日,3.44200 1960年2月2日,4.27273 1980年3月3日,2.12721 4,F41960,3.57212 5,F51960,2.17786 您如何找到年份列表和每年发生的事件数 我已经试过了,但没有成功。它显示了模式错误Hadoop 使用pig查找每年发生的事件的年份和数量列表,hadoop,apache-pig,Hadoop,Apache Pig,数据集详细信息如下: id、事件、年份、等级、持续时间 1980年11月1日,3.44200 1960年2月2日,4.27273 1980年3月3日,2.12721 4,F41960,3.57212 5,F51960,2.17786 您如何找到年份列表和每年发生的事件数 我已经试过了,但没有成功。它显示了模式错误 events = load 'event' using pigstorage ',' as (id:int, event:chararray, year:int, rating:flo
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;
答案如下:
首先,您的load语句不正确:
事件=使用存储加载“事件”(id:int,事件:chararray,年份:int,额定值:float,持续时间:int);--不正确
PigStorage是一个函数,正确的写入方式是PigStorage(“,”)
现在谈谈你的问题
输入
1980年11月1日,3.44200
1960年2月2日,4.27273
1980年3月3日,2.12721
4,F41960,3.57212
5,F51960,2.17786
猪脚本
//使用正确的语法和分隔符加载数据
events=使用PigStorage(',')加载'stack_case001.txt',作为(id:int,event:chararray,year:int,rating:float,duration:int)
//按年度对数据进行分组
列出年数=每年的团体活动
//通过迭代分组数据并计算与分组实体对应的项目数,计算每年的事件数
每一年的事件数量=每一年的列表生成组,计数($1)
//在屏幕上打印输出
每年事件的转储数量
输出
(1960,3)
(1980,2)
希望能有所帮助。太好了,在这种情况下,不要忘了用绿色勾号将答案标记为已接受答案:)