【问题标题】:Hadoop Pig Max CommandHadoop Pig Max 命令
【发布时间】: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

标签: hadoop apache-pig


【解决方案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)”检索)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多