#apache-pig
#apache-pig
Вопрос:
У меня есть файл
(1,1,100)
(1,1,200)
(1,2,300)
Теперь я хочу, чтобы distinct применялся к двум столбцам и хотел, чтобы результат был
Я сделал это
Сгруппируйте все остальные столбцы, перенесите только интересующие столбцы в пакет, а затем используйте FLATTEN, чтобы снова развернуть их:
A_unique =
FOREACH (GROUP A BY id3) {
b = A.(id1,id2);
s = DISTINCT b;
GENERATE FLATTEN(s);
};
DUMP A_unique;
Вывод получается
(1,1)
(1,1)
(1,2)
Я ожидал, что это будет
(1,1)
(1,2)
Ответ №1:
Здесь вы идете, это должно дать вам желаемый результат —
a = load 'sample1.txt' using PigStorage(',') as (id1:int, id2:int, id3:int);
b = group a by (id1, id2);
c = foreach b {
first_e = limit a.id3 1;
generate flatten(group) as (id1, id2);
}
Ответ №2:
Приведенный ниже код генерирует требуемый результат.
a = load '$dir/data' using PigStorage(',') as (d1:int,d2:int,d3:int);
b= group a all;
c= foreach b {
d = a.(d1,d2);
e = DISTINCT d;
generate FLATTEN(e);
}
dump c ;
~