在Pig 11中的组内排名

时间:2013-04-08 20:42:15

标签: jython apache-pig

猪问题,

我的数据设置方式如下。

Function    Group   Home    Name
Rent    MX  1   John
Rent    MX  1   Jake
Rent    MX  1   Pat
Rent    DG  2   Jason
Rent    DG  6   Patrick
Rent    DG  6   Smith
Rent    DG  6   Joe

我想要做的是按功能分组,分组和家庭,然后在该组内排名。

Function    Group   Home    Name    Rank
Rent    MX  1   John    1
Rent    MX  1   Jake    2
Rent    MX  1   Pat 3
Rent    DG  6   Patrick 1
Rent    DG  6   Smith   2
Rent    DG  6   Joe 3

猪的RANK功能不允许我在组内排名。任何建议? Jython UDF?

3 个答案:

答案 0 :(得分:1)

查看DataFu中的Enumerate UDF,它会为您完成此操作。 http://datafu.incubator.apache.org/docs/datafu/1.1.0/datafu/pig/bags/Enumerate.html

答案 1 :(得分:0)

我会给出一些指示。

在Cascading API中,我使用了buffer,它允许我们迭代组值。

我读到cascading也有Jython开发人员的api,你可以探索一下。

答案 2 :(得分:0)

好的,这有效

def num_bag(input):
output = []
for rank, item in num(input):
    output.append(tuple([rank] + list(item)))
return output