Hadoop apache Pig正在尝试获取每个组中的最大计数

Hadoop apache Pig正在尝试获取每个组中的最大计数,hadoop,apache-pig,hadoop2,hadoop-streaming,Hadoop,Apache Pig,Hadoop2,Hadoop Streaming,我有pig格式的数据 {(组、产品ID、计数)} 现在我想得到每个组中的最大计数,输出可能如下所示 {(组、产品ID、最大计数)}。下面是示例输入数据 (南美洲,产品1,45),(南美洲,产品2,36),(拉丁美洲,产品1,48),(拉丁美洲,产品5,35) 下面是这个输入的输出 (南美洲,prod1,45) (北美,prod2,36) (拉丁美洲,prod1,48) 有人能帮我吗。根据您的示例输入数据,这应该可以做到: data = load 'sf.csv' using PigStora

我有pig格式的数据

{(组、产品ID、计数)}

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

{(组、产品ID、最大计数)}
。下面是示例输入数据

  • (南美洲,产品1,45),(南美洲,产品2,36),(拉丁美洲,产品1,48),(拉丁美洲,产品5,35)
下面是这个输入的输出

  • (南美洲,prod1,45)
  • (北美,prod2,36)
  • (拉丁美洲,prod1,48)

  • 有人能帮我吗。

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

    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)
    

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

    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)