2016-02-23 3 views
0

Im пытается подсчитать количество дубликатов членов и иметь число> 1 в файле со списком идентификаторов. Я побежал ниже, но получил 1 значение, которое я думаю, это просто подсчет количества строк в MemberID колонки:Как подсчитать повторяющиеся значения в PIG

ids = load 'ids'; 
ids = filter ids by id; 
group = group ids ALL; 
count = foreach group generate count (ids); 
dump count; 
+0

На самом деле мой файл имеет 2 столбца, столбец идентификаторов и столбцы createate. Как мне подсчитать количество идентификаторов> 1 с датой создания 30 дней с сегодняшнего дня? – Tai

ответ

0

Я предполагаю, что файл с разделителями табуляции.

A = LOAD '/test.txt' USING PigStorage('\t') AS (id:int,create_dt:chararray); 
B = FILTER A BY (id > 1 and DaysBetween(CurrentTime(),ToDate(create_dt)) == 30); 
C = GROUP B BY id; 
D = FOREACH C GENERATE group as id,COUNT(B) as totalcount; 
DUMP D; 
+0

спасибо! на самом деле часть im, имеющая проблемы с вашим «B» ниже. Как мне изменить это, чтобы он только вытаскивал идентификаторы, которые являются дубликатами? Так, например, если у меня есть ID 2345, а «2345» появляется 3 раза в файле, я хочу, чтобы это получилось на выходе с столбцом для идентификационного номера, а второй столбец - количеством времени, которое оно появилось поэтому в этом примере во втором столбце будет отображаться «3». – Tai

+0

В ваших комментариях, которые вы запросили для count ids> 1, и теперь вы просите подсчет идентификаторов, где счетчик> 1. Просто удалите (id> 1 и) из фильтра «B». Затем добавьте E = FILTER D BY totalcount> 1; DUMP E; –

+0

спасибо @inquisitive_mind, вы благочестивы – Tai

Смежные вопросы