首页 > 解决方案 > 有没有办法计算每年事件的个别实例?

问题描述

我正在研究 Apache Pig,以了解如何使用大型数据库。具体问题是,当记录区域的温度记录在80度以上时,我需要计算数据集中列出的所有年份每年的天数。

数据按以下方式设置。日期最高温度

1919-06-03, 36

1919-11-26, 91

1927-09-23, 61

这种情况每天都在重复大约 200 年。

目前,我知道为了使这更易于管理,我将使用拆分功能,根据温度高于 80 度拆分数据集。

    SPLIT data INTO max_above_95 if max_t > 80;

我还认为,如果您可以将年份排除在日期之外,则可以在拆分后进行分组以获得预期的结果并计数。但是,我找不到使用年份的日期块的方法。

我需要这个来最终输出每年的输出,以及那一年的出现次数,如下所示:

(1993, 21)

(1994, 7)

(1995, 13)

标签: apache-pig

解决方案


使用 FILTER 然后提取年份,按年份分组,计算出现次数。

B = FILTER A BY (A.max_t > 80);
C = FOREACH B GENERATE B.Date,GetYear(B.Date) as Year,max_t;
D = GROUP C BY Year;
E = FOREACH D GENERATE FLATTEN(group) as Year,COUNT(C.max_t);
DUMP E; 

推荐阅读