Hadoop 使用pig查找每年发生的事件的年份和数量列表

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

数据集详细信息如下:

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: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)


希望能有所帮助。

太好了,在这种情况下,不要忘了用绿色勾号将答案标记为已接受答案:)