2013-06-03 2 views
0

Я анализирую файлы журналов с различными именами доменов, используя Cascading. Ниже приведен пример отчета о выходе после того, как он был отфильтрован:Объединение выходов в каскаде

www.google.nl 3

www.google.it 3

www.google.com.co 3

www.google.com.hk 3

www.google.co.jp 3

Я хотел бы сгруппировать или объединить все домены, которые «Google» на него, как только одна строка. В выходном отчете будет только одна строка для всех доменов google. Что-то вроде этого:

www.google.com 15

или

Google 15

Как вы думаете, это возможно? Есть идеи?

ответ

0

Пока, как вы понимаете, как настроить краны и привязать их к вашей трубе, вы можете использовать такие функции, как RegexMatcher искать ^www\\.google.* и поместить их в отдельной колонке затем использовать CountBy придумать с отсчетом.

Вы должны быть в состоянии выполнить эту задачу в двух трубах. Один из них, чтобы захватить Google из ваших ссылок, а другой - считать их.

Надеюсь, это поможет!

0

Это возможно в каскадном режиме. Предположим, что ваши имена полей (url, count). Применить функцию, чтобы добавить еще одно поле с именем «домен», которое содержит значение google, если строка содержит слово google и отбросить поле url. Теперь, если вам не нужны другие домены, отфильтруйте их. Так что теперь у вас есть два поля (домены, количество), где домен содержит только слово Google

Теперь используйте AggregateBy(), SumBy() функцию каскадирования.

SumBy any_name = new SumBy (field_name_to_sum, field_name_after_sum, dataType class);

результат Труба = новый AggregateBy ("название", Pipe.pipes (sourcePipeName), name_of_groupBy_field, number_of_SumBy_instances, name_of_sumBy_instance);

в вашем случае это становится

SumBy А = новый SumBy (новые поля ("рассчитывать"), новые поля ("combined_count"), Integer.class);

Результаты по трубопроводу = новый агрегатБы («результат», труба.pipe (sourcePipeName), новые поля («домен»), 1, xyz);

Так что теперь в результате труба содержит одну строку (Google, граф)

Таким образом, выше фрагмент кода будет работать похож на SQL Query ниже.

выбрать домен, сумму (количество) из группы источников по домену;

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