# !/usr/bin/python
@outputschema('Values:{(first:int, second:int, third:int)}')
def get_max(BAG)
v = max(BAG, key=lambda x: x[2])
# Since you want it to return in a bag, v needs to be in a list
return [v]
Pig手稿
REGISTER 'myudfs.py' USING jython AS myudfs ;
-- A is your input
B = FOREACH A GENERATE myudfs.get_max(my_input_bag) ;
2条答案
按热度按时间xdyibdwo1#
想法是首先找到max,然后将max值作为一个额外的列添加,然后过滤掉所有不满足$2==$maxvalue的行。
遵循粗略的代码-改编自此解决方案
qcbq4gxm2#
虽然您可以在纯pig中这样做,但是使用udf应该更有效。这也很简单:
我的自定义项.py
Pig手稿