通常你会想要GROUP
通过 BID,然后使用MIN
. 但是,由于您希望整个元组与最小值相关联,因此您需要使用UDF来执行此操作。
myudfs.py
@outputSchema('vals: (ID: int, Seller: chararray, Price: chararray, BID: chararray)')
def get_min_tuple(bag):
return min(bag, key=lambda x: x[2])
我的脚本.pig
register 'myudfs.py' using jython as myudfs ;
-- A: (ID: int, Seller: chararray, Price: chararray, BID: chararray)
B = GROUP A BY BID ;
C = FOREACH B GENERATE group AS BID, FLATTEN(myudfs.get_min_tuple(A)) ;
-- Now you can do the JOIN to get the type of novel on C
请记住将类型(int、chararray 等)更改为适当的值。
注意:如果一个 ID 中的多个项目A
具有相同的最低价格,那么这将只返回其中一个。