Я хотел бы использовать hadoop для обработки неструктурированных CSV-файлов. Эти файлы неструктурированы в том смысле, что они содержат несколько значений данных из разных типов с переменной длиной строки. Кроме того, есть сотни этих файлов, и они часто относительно большие по размеру (> 200 МБ).Обработка неструктурированных данных с помощью Hadoop + MapReduce
Структура каждого файла может быть продемонстрирована следующим образом:
Book , ISBN , BookName , Authors , Edition
Book , 978-1934356081, Programming Ruby 1.9 , Dave Thomas, 1
Book , 978-0596158101, Programming Python , Mark Lutz , 4
...
BookPrice, ISBN , Store , Price
BookPrice, 978-1934356081, amazon.com , 30.0
BookPrice, 978-1934356081, barnesandnoble.com , 30.67
BookPrice, 978-0596158101, amazon.com , 39.55
BookPrice, 978-0596158101, barnesandnoble.com , 44.66
...
Book , ISBN , BookName , Authors , Edition
Book , 978-1449311520, Hadoop - The Definitive Guide, Tom White , 3
...
файлы генерируются автоматически, и я не имею никакого контроля над данной структурой. В принципе, есть строка заголовка, за которой следуют строки данных, содержащие значения, соответствующие заголовкам. Тип строки может быть идентифицирован первым разделенным запятой словом. Итак, из примера строка Book
содержит метаданные о книгах (имя, isbn, author, edition), а BookPrice
содержит различные цены на книги для разных торговых точек/поставщиков.
Я пытаюсь понять, как использовать Map/Reduce для выполнения некоторых обобщенных вычислений по данным. Наличие структурированных данных таким образом, что это затрудняет понимание того, какие пары key -> value
извлекать в каждой фазе.
Например, я хотел бы, чтобы вычислить СРЕДНЯЯ, MAX и MIN цены для каждой книги (могут быть объединены/сгруппированы по ISBN). Я понимаю, что могу сделать предварительную обработку, чтобы извлечь эти данные в упорядоченные, однотипные CSV-файлы и работать оттуда (используя grep, python, awk и т. Д.), Но это победит точку использования M/R + Hadoop , и потребует много дополнительной работы.
Я думал об использовании нескольких этапов карты, но я довольно новичок в этом и не знаю, как и с чего начать.
Как я могу реализовать такое задание M/R (в Java) для образца файла/запроса? Благодарю.
очень крутой подход, спасибо. Не могли бы вы поделиться некоторыми из ваших фактических данных/кода реализации? – sa125
Я не против. Бросьте мне электронное письмо, и я буду рад помочь. –
Дэвид, как вы разделили заголовок с файла? Http: //stackoverflow.com/questions/21040166/aggregation-in-mapreduce –