2013-09-16 2 views
2

Привет, Я хотел бы знать, как реализовать логику поиска в Hadoop Pig. У меня есть набор записей, например, для пользователя веб-журнала, и вам нужно вернуться, чтобы получить некоторые поля из его первого посещения (а не текущего).Как реализовать логику поиска в hadoop pig

Это выполнимо на Java, но есть ли у нас способ реализовать это в Hadoop pig.

Пример:

Предположим, что для перемещения одного конкретного пользователя, идентифицированный col1 и col2, выходной первое значение для этого пользователя в lookup_col, в данном случае «1».

col1 col2 lookup_col 
---- ---- ----- 
326 8979 1 
326 8979 4 
326 8979 3 
326 8979 0 
+0

Это, вероятно, возможно для чистой свиньи, но вам нужно будет дать некоторый образец ввода. – mr2ert

ответ

1

Вы можете реализовать это как свиной UDF.

В качестве альтернативы вы также можете использовать простую SQL-подобную логику и агрегировать посещения пользователем (не знаете, как вы определяете пользователя и как вы планируете искать пользователя, но это другое дело), ​​и получите первое и а затем присоединиться к пользователям с agg_visits.

«Реплицированное соединение» в Pig - это, по существу, поиск в наборе, который распределяется между узлами и загружается в память. Однако вы можете получить больше, чем один результат, потому что это операция JOIN, а не поиск, поэтому, если вы заранее агрегируете данные, убедитесь, что у вас есть только одна запись на ключ.

+0

Не порядок заказов не гарантируется после загрузки файла (ов) и после 'GROUP'? – mr2ert

+0

Заказ можно сохранить, используя сортировку по столбцу отметки времени .. –

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