Нам нужно, как часть нашего продукта для запуска, вычислить «аналогичную пользовательскую функцию».И мы решили пойти со свиньей для этого.Я изучаю свинью уже несколько дней и понимаю, как она работает.Итак, для начала вот как выглядит файл журнала.
user url time
user1 http://someurl.com 1235416
user1 http://anotherlik.com 1255330
user2 http://someurl.com 1705012
user3 http://something.com 1705042
user3 http://someurl.com 1705042
Поскольку число пользователей и URL-адресов может быть огромным, мы не можем использовать здесь грубый подход, поэтому сначала нам нужно найти пользователякоторые имеют доступ по крайней мере к общему URL.
Алгоритм можно разделить следующим образом:
- Найти всех пользователей, которые обращались к некоторым общим URL.
- создать попарную комбинацию всех пользователей для каждого ресурса, к которому осуществляется доступ.
- для каждой пары и URL-адреса, вычислите сходство этих пользователей: сходство зависит от временного интервала между доступом (поэтому нам нужно отслеживатьвремя).
- Суммируйте для каждой пары-пары сходство.
вот что я написал до сих пор:
A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long);
grouped_pos = GROUP A BY ($1);
Я знаюэто немного, но сейчас я не знаю, как создать пару или двигаться дальше.Так что любая помощь будет оценена.
Спасибо.