apache pig试图在每个组中获得最大计数

chy5wohz  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(400)

我有Pig格式的数据 {(group, productId, count)} .
现在我想得到每个组中的最大计数,输出可能如下所示 {(group, productId, maxCount)} . 以下是示例输入数据 (south America,prod1, 45),(south America,prod2, 36), (latin america, prod1, 48),(latin america, prod5,35) 下面是这个输入的输出 (south america, prod1, 45) (North America, prod2, 36) (latin america, prod1, 48) 有人能帮我吗。

ev7lccsx

ev7lccsx1#

根据您的示例输入数据,这应该可以做到以下几点:

data = load 'sf.csv' using PigStorage(',') as (country:chararray, product:chararray, c:int);
g = group data by country;
result = foreach g {
    prods = order data by c desc;
    top_prods = limit prods 1;
    generate flatten(top_prods);
}
dump result;

它按第一列对输入进行分组,然后在嵌套的foreach中按计数对每组产品进行排序,然后取第一列(最高计数)。
输出:

(latin america,prod1,48)
(south America,prod1,45)

相关问题