Hadoop apache Pig正在尝试获取每个组中的最大计数
我有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
{(组、产品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)