Я новичок в hadoop. Я хотел бы с вами подвести некоторые подходы, которые я придумал.Сходство с использованием Hadoop
Проблема:
2 наборов данные: А и Б.
Оба набора данных представляют собой песню: некоторые атрибуты верхнего уровня, заголовки (1 .. ), исполнитель (1 ..).
Мне нужно сопоставить эти наборы данных либо с использованием равенства или нечетких алгоритмов (таких как levenshtein, jaccard, jaro-winkler и т. Д.) На основе названий и исполнителей.
Размеры набора данных: A = 20-30M, B ~ = 1-6M.
Так вот есть подходы, которые я придумал:
нагрузки набора данных B (наименьший) в HDFS. Используйте mapreduce против набора данных A (самый большой), где:
фаза карты: для каждой записи в доступе HDFS и записи тяги B для сопоставления;
уменьшение фазы: записывает пары IDнагрузку набор данных A в distirubted кэша (т.е. JBoss кэш) в оптимизированной форме, чтобы ускорить поиск. Используйте MapReduce против набора данных B, где:
карты фазы: для каждой записи в B запросе распределенного кэш для сопоставления
уменьшить: пишет пары IDиспользовать MapReduce, чтобы присоединиться как наборы данных, где
карты фазы: Получает запись из набора A и набора B, соответствует
фаза уменьшения: то же самое
(я нечеткий о том, 1-й: соединение будет декартовым продуктом с триллионом записей; 2-й: не уверен, как хаоп может парализовать это через кластер)использовать улей (я смотрю на прямо сейчас, пытаясь выяснить, как плагин пользовательских функций, которые будут делать сопоставление строк)
Я loooking за указатели, какой подход был бы лучшим кандидатом или могут быть, есть некоторые другие подходы, которые я не вижу.
Спасибо за ответ. Ссылка очень полезна. – mtim