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

Posted

技术标签:

【中文标题】apache Pig 试图在每个组中获得最大计数【英文标题】:apache Pig trying to get max count in each group 【发布时间】:2015-03-27 06:13:59 【问题描述】:

我有猪的格式数据

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

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

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

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)

【讨论】:

以上是关于apache Pig 试图在每个组中获得最大计数的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig 区分和计数

使用 pig 生成最大数量

将键值元组包转换为 Apache Pig 中的映射

Apache pig Store 基于条件

Apache PIG - 使用百分比值对 foreach 中的分组数据进行采样

最大/最小/计数等没有给出好的价值