Hadoop 如何在pig中从地图中检索最大值

Hadoop 如何在pig中从地图中检索最大值,hadoop,map,apache-pig,Hadoop,Map,Apache Pig,我有亲戚。描述书籍->{map[]} 这里有一对,键是Ashok LeyLand,值是Ashok 0.15 Ashok LeyLand#Ashok 0.15. Ashok LeyLand#Land 0.012. Ashok LeyLand#Ley 0.002. Ashok LeyLand#Ashoka 0.09. Hero Cycles Limited#Hero Cycles 0.72 Hero Cycles Limited#Hero 0.06 Hero Cycles Limited#Hero

我有亲戚。描述书籍->{map[]}

这里有一对,键是Ashok LeyLand,值是Ashok 0.15

Ashok LeyLand#Ashok 0.15.
Ashok LeyLand#Land 0.012.
Ashok LeyLand#Ley 0.002.
Ashok LeyLand#Ashoka 0.09.
Hero Cycles Limited#Hero Cycles 0.72
Hero Cycles Limited#Hero 0.06
Hero Cycles Limited#Hero Limited 0.54
Hero Cycles Limited#Cycles 0.01
我想要一双价值最高的。需要输出为Ashok LeyLandAshok 0.15。 如果有可能获得所需的输出,我可以修改以下关系

这里的一对,键是Ashok LeyLand,Ashok值是0.15

Ashok LeyLand Ashok#0.15.
Ashok LeyLand Land#0.012.
Ashok LeyLand Ley#0.002.
Ashok LeyLand Ashoka#0.09.
Hero Cycles Limited Hero Cycles#0.72
Hero Cycles Limited Hero#0.06
Hero Cycles Limited Hero Limited#0.54
Hero Cycles Limited Cycles#0.01

谢谢

我使用MapToBag UDF将map转换为bag。使用GROUP按所需键将行分组。使用Top函数过滤最高值,而不是使用ORDER BY和LIMIT。

您是否尝试使用MapToBag UDF将地图转换为bag,然后对bag中的元组进行排序?我对piglatin不熟悉,请详细说明。您无法对地图的值进行排序。你可以在袋子里订购元组。使用MapToBag UDF将您的Map keyvalue转换为一个包{key,value},然后使用ORDER操作按值对包中的元组进行排序。我认为piggybank中没有MapToBag。你能分享吗?对元组进行排序后,我们得到了有序列表,对吗?但我只需要一双高分的。例如,1.Ashok Leyland Ashok 0.15 2.英雄循环有限英雄循环0.72等等..是的,它不在储物罐中。我想我是从个人图书馆用的。您可能需要定义自己的UDF。关于使用顺序,一旦你对元组进行了排序,你就可以使用limit来选择第一个元组,它的值最高。你介意把代码贴在这里吗?这将帮助其他人解决同样的问题。