Различается на нескольких столбцах pig

#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 ;
  

~