apache Pig试图获得每组的最大数量

时间:2015-03-27 06:13:59

标签: hadoop apache-pig hadoop2 hadoop-streaming

我有猪的格式数据

{(group, productId, count)}

现在我想在每个组中获得最大计数,输出可能如下所示

{(group, productId, maxCount)}。这是样本输入数据

  • (south America,prod1, 45),(south America,prod2, 36), (latin america, prod1, 48),(latin america, prod5,35)

此输入的输出类似于

  1. (south america, prod1, 45)
  2. (North America, prod2, 36)
  3. (latin america, prod1, 48)
  4. 有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

根据您的示例输入数据,这应该可以解决问题:

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)