Я столкнулся со сложной проблемой с Mapreduce. Я пытаюсь сопоставить 2 уникальных значения, которые не всегда присутствуют вместе в одной строке. После того как я отобразил их, мне нужно подсчитать общее количество уникальных событий для этого сопоставления.
Файлы журналов, которые я копирую, имеют размер 100 ГБ + без сжатия и разбиты на две части, которые мне нужно собрать. События распределены по многим различным файлам журнала. Я думаю, что самый простой способ описать проблему - показать образец журналов.
[2010/09/23 12:02am] AAAAAAAAAA BBBBBBBBBB Event message type A
[2010/09/23 12:02am] BBBBBBBBBB Event message type B
[2010/09/23 12:03am] BBBBBBBBBB Event message type B
[2010/09/23 12:09am] BBBBBBBBBB
[2010/09/23 12:01am] CCCCCCCCCC DDDDDDDDDD Event message type A
[2010/09/23 12:05am] DDDDDDDDDD Event message type A
[2010/09/23 12:06am] DDDDDDDDDD Event message type C
2-й и 3-й столбцы - это уникальные идентификаторы, которые никогда не совпадают. Мне нужно наметить количество уникальных предметов в 4-м столбце, связанном со 2-м и 3-м столбцами. 2-й столбец всегда присутствует хотя бы один раз. 3-й столбец присутствует всегда. 4-й столбец может присутствовать или не присутствовать. Я все еще хочу считать 4-й столбец неизвестным событием. Фактическое число уникальных значений достигает миллионов, а общее количество строк журнала достигает миллиардов.
Решение для вышеупомянутого должно быть.
AAAAAAAAAA,BBBBBBBBBB,A 1
AAAAAAAAAA,BBBBBBBBBB,B 2
AAAAAAAAAA,BBBBBBBBBB,Unknown 1
CCCCCCCCCC,DDDDDDDDDD,A 2
CCCCCCCCCC,DDDDDDDDDD,C 1
Я думал о том, чтобы разбить 2-й и 3-й столбцы на 2 отдельных mapreduces, но объединить эти результаты вместе - это сложно. Не уверен, как сделать окончательный Mapreduce для объединения этих значений. 2-й столбец будет повсюду в файле. Это могло бы показать 1:00 тогда снова в 11:00.
Любые предложения о том, как я мог бы использовать Hadoop mapreduce для решения этой проблемы? Я использую потоковую передачу Hadoop, не знаю Java.