在 pig 中,我有A,B,C,id,id_type列。可能的id_types是“zip”,“city”,“county”,“state”和“country”。

我希望这样做,以便每个现有的A,B,C仅存在一个实例,但是优先于id_type为“zip”的行,如果不是,则为“zip”,然后为“city”,如果不是,则为“city” ”等。

所以,如果我有以下两行

(a, b, c, 555, city)
(a, b, c, 123, state)

我要删除第二个。我可以按A,B,C分组以获得
({a, b, c}, {(a, b, c, 555, city), (a, b, c, 123, state)})

但是我不知道如何从$ 1中删除所有不需要的元素

最佳答案

@inquistive_mind:我使用以下输入运行了您的代码,但不返回OP的要求

输入:

(aa,bb,cc,1,zip)
(aa,bb,cc,2,street)
(mmm,nnn,cc,3,county)
(mmm,nnn,cc,4,zip)
(mmm,nnn,cc,5,state)
(lll,ccc,ddd,6,city)
(lll,ccc,xxx,7,country)

运行代码后输出:
((aa,bb,cc),{(2,country),(1,zip)})
((lll,ccc,ddd),{(6,city)})
((lll,ccc,xxx),{(7,country)})
((mmm,nnn,cc),{(5,state),(4,zip),(3,county)})

您清楚地看到,它并没有只保留id_type优先级的一项。

关于hadoop - 在 pig 中,我想将组减少为具有优先级为1的特定类型的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36611195/

10-16 01:35