即使包含重复项,如何获得 pig 的第三高薪水。

请帮我。

输入:

Sri 30000
Abhi 15000
SAS 15000
mansa 18000
asdf 5262
dnaj 20000
harda 20000

最佳答案

您可以使用RANK并在不同的薪水关系中获得排名第三的记录来实现此目的。我将使用LIMIT。

A = LOAD 'data.txt' USING PigStorage('\t') AS (name:chararray,salary:int);
B = FOREACH A GENERATE A.Salary;
C = DISTINCT B;
D = ORDER C BY C.$0 DESC;
E = LIMIT D 3;
F = ORDER E BY E.$0 ASC;
G = LIMIT F 1;
H = FILTER A BY (A.Salary = G.$0);


Sri 30000
Abhi 15000
SAS 15000
mansa 18000
asdf 5262
dnaj 20000
harda 20000

B
30000
15000
15000
18000
5262
20000
20000

C
30000
15000
18000
5262
20000

D
30000
20000
18000
15000
5262

E
30000
20000
18000

F
18000
20000
30000

G
18000

H
mansa 18000

关于hadoop - pig 的第三高薪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41971112/

10-10 13:37