PIG 中整组记录的最大值/最小值

2024-01-02

我有一组从文件加载的记录,我需要做的第一件事是获取列的最大值和最小值。 在 SQL 中,我将使用如下子查询来执行此操作:

   select c.state, c.population, 
(select max(c.population) from state_info c) as max_pop, 
(select min(c.population) from state_info c) as min_pop
from state_info c

我认为 PIG 中也一定有一种简单的方法可以做到这一点,但我找不到它。它有一个 MAX 和 MIN 函数,但是当我尝试执行以下操作时它不起作用:

records=LOAD '/Users/Winter/School/st_incm.txt'  AS (state:chararray, population:int);
with_max = FOREACH records GENERATE state, population, MAX(population);

这不起作用。我运气更好,为每行添加一个具有相同值的额外列,然后将它们分组到该列上。然后获得新组的最大值。这似乎是获得我想要的东西的复杂方式,所以我想我会问是否有人知道更简单的方法。

先谢谢您的帮助。


正如您所说,您需要将所有数据分组在一起,但如果您使用,则不需要额外的列全部分组 http://pig.apache.org/docs/r0.8.0/piglatin_ref2.html#GROUP.

Pig

records = LOAD 'states.txt'  AS (state:chararray, population:int);
records_group = GROUP records ALL;
with_max = FOREACH records_group 
           GENERATE
               FLATTEN(records.(state, population)), MAX(records.population);

Input

CA  10
VA  5
WI  2

Output

(CA,10,10)
(VA,5,10)
(WI,2,10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIG 中整组记录的最大值/最小值 的相关文章

随机推荐