我有个拉丁Pig问题。我有一张table,上面有:
ID:Seller:Price:BID
1:John:20:B1
1:Ben:25:B1
2:John:60:B2
2:Chris:35:B2
3:John:20:B3
我可以使用以下方法(假设 A
是 LOAD
表):
W = GROUP A BY ID;
但我似乎无法理解的是,命令只返回每个id的最低价格值。在本例中,最终输出应该是:
1:John:20:B1
2:Chris:35:B2
3:John:20:B3
干杯,
希维多格
我有个拉丁Pig问题。我有一张table,上面有:
ID:Seller:Price:BID
1:John:20:B1
1:Ben:25:B1
2:John:60:B2
2:Chris:35:B2
3:John:20:B3
我可以使用以下方法(假设 A
是 LOAD
表):
W = GROUP A BY ID;
但我似乎无法理解的是,命令只返回每个id的最低价格值。在本例中,最终输出应该是:
1:John:20:B1
2:Chris:35:B2
3:John:20:B3
干杯,
希维多格
2条答案
按热度按时间zy1mlcev1#
一般来说你会想
GROUP
通过投标,然后使用MIN
. 但是,由于您希望整个元组与最小值相关联,因此您需要使用udf来实现这一点。我的自定义项.py
myscript.pig文件
请记住将类型(int、chararray等)更改为适当的值。
注意:如果有多个项目
A
如果一个id有相同的最低价格,那么这将只返回其中一个。hmae6n7t2#
选项(1)-以最高价格获取所有记录:
使用新的(pig 0.11)秩运算符:
选项(2)-以最高价格获取所有记录:
清管器版本低于0.11:
选项(3)-使用org.apache.pig.piggybank.evaluation.extremaltuplebynthfield获取具有最高价格的元组之一: