Как использовать 2 для петель в Apache Pig - PullRequest
0 голосов
/ 07 октября 2018

Как мне использовать 2 для циклов в Apache Pig?

У меня есть входные данные, как показано ниже:

1  a 3
15 b 4
1  b 2
25 a 5
15 c 3
1  a 3
15 c 2
25 b 4

Промежуточный вывод: для 1 общего количества нет.a и b, аналогичные для 15 и 25

1 a 6
1 b 2
15 b 4
15 c 5
25 a 5
25 b 4

Конечный результат: требуется 1 максимальное число

1 a 6
15 c 5
25 a 5

1 Ответ

0 голосов
/ 09 октября 2018
A = load 'test.input' using PigStorage() as (index:int, id:chararray, count:int);
B = GROUP A by (index, id);
C = FOREACH B GENERATE flatten(group), SUM(A.count) as sum;

store C into '/tmp/intermediate';

D = GROUP C by index;

E = FOREACH D {
    ORDERED_C = order C by sum DESC;
    LIMIT_C = LIMIT ORDERED_C 1;
    GENERATE FLATTEN(LIMIT_C);  -- flatten to take out the unnecessary bag
}
store E into '/tmp/final';
...