Каков наилучший способ группировки URL-адресов в java-работе Map-Reduction Job? - PullRequest
0 голосов
/ 11 июля 2019

У меня огромный набор данных URL-адресов из разных доменов. Я должен обработать их с помощью mapreduce, чтобы URL-адреса с похожим шаблоном были сгруппированы вместе. Например

http://www.agricorner.com/price/onion-prices/
http://www.agricorner.com/price/potato-prices/
http://www.agricorner.com/price/ladyfinder-prices/

http://www.agricorner.com/tag/story/story-1.html
http://www.agricorner.com/tag/story/story-11.html
http://www.agricorner.com/tag/story/story-41.html

https://agrihunt.com/author/ramzan/page/3/
https://agrihunt.com/author/shahban/page/5/
https://agrihunt.com/author/Sufer/page/3/

Я хочу сгруппировать эти URL-адреса на основе их шаблона, то есть, если URL-адрес имеет аналогичный шаблон (в фазе редуктора Map-Reduce). Ожидаемый результат может быть как

group1, http://www.agricorner.com/price/onion-prices/, http://www.agricorner.com/price/potato-prices/, http://www.agricorner.com/price/ladyfinder-prices/

group2, http://www.agricorner.com/tag/story/story-1.html, http://www.agricorner.com/tag/story/story-11.html, http://www.agricorner.com/tag/story/story-41.html

group3, https://agrihunt.com/author/ramzan/page/3/, https://agrihunt.com/author/shahban/page/5/, https://agrihunt.com/author/Sufer/page/3/

Это возможно? Есть ли лучший подход, чем предполагаемый?

обновление для аналогичного шаблона :

Для приведенного выше примера "/ price / ladyfinder-Prices", "Price / potato-Prices /" и "/ Ladyfinder-Prices /" сгруппированы вместе, так как они имеют один и тот же домен, путь до некоторого уровня. Та же история для других примеров. Мой сценарий очень близок к обсуждаемому на github , но как это работает для карты-уменьшения?

1 Ответ

1 голос
/ 13 июля 2019

Сопоставьте каждый URL с ключом, указав все, что было удалено после последнего /.

Готово.Просто, не правда ли.

Что-то более сложное может потерпеть неудачу, и вам нужно будет тщательно продумать дальнейшие правила.Например, вы можете заменить \d+ на 0, чтобы получить дополнительные образцы.Или определить общие форматы дат.

В любом случае, напишите код, чтобы назначить один и тот же ключ всему, что должно быть в одной группе, и разные ключи для разных групп.

...