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 命令的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop PIG Max of Tuple

如何查看Hadoop上安装的pig版本

记录主动泄漏到 Hadoop Pig 中?

无法使用 java 命令运行 Pig jar

PIG 自动与默认 HDFS 连接,如何?

如何使用 apache pig 在 hadoop 集群上加载文件?