Hadoop Pig Max 命令
Posted
技术标签:
【中文标题】Hadoop Pig Max 命令【英文标题】:Hadoop Pig Max Command 【发布时间】:2016-03-03 12:25:27 【问题描述】:我有一个文件,其中包含来自世界各地的所有国家/地区的数据。
我想找出机场最多的国家。
我写了以下代码:
A = load 'airports.dat' USING PigStorage (',') AS(AirportID:int,Name:chararray,City:chararray,Country:chararray,IATA:chararray,IATAothers:chararray,Latitude:float,Longitude:float,Altitude:float,Timezone:float,DST:chararray,Zone:chararray);
B= GROUP A BY Country;
C= FOREACH B GENERATE A.Country, COUNT(A) AS Count;
但在此之后我不知道如何找到最大值。
有人可以帮忙吗。
【问题讨论】:
MAX “计算单列包中数值或字符数组的最大值。”,因此它对值进行操作,而不是对整列进行操作。您必须订购 DESC 和 LIMIT 【参考方案1】:您已创建每个国家/地区的机场数量。你现在需要做的,是取数字最大的那一行:
D = order C by $1 DESC;
E = limit D 1;
dump E;
【讨论】:
感谢运行.... 输出类似于 ((india),(india),(india)....等,25) 如果我只想输出 (india,25) 需要做什么 您应该将组生成为 Country,而不是生成 A.Country。当你做一个 groupby 时,你实际上得到了 groupkey|all 属于该组的行的关系。当您生成 A.country 时,它将为您提供每一行的国家/地区。您需要的是他们的组键(只需使用“为每个 B 生成组,COUNT(A)”检索)以上是关于Hadoop Pig Max 命令的主要内容,如果未能解决你的问题,请参考以下文章