Как читать сжатые bz2 (bzip2) дампы из Википедии в программу чтения xml-записей потока для уменьшения карты hadoop - PullRequest
6 голосов
/ 17 июля 2011

Я работаю над использованием Hadoop Map Reduce для исследования дампов данных в Википедии (сжатых в формате bz2).Поскольку эти дампы очень большие (5 T), я не могу распаковать xml-данные в HDFS и просто использовать StreamXmlRecordReader, который предоставляет hadoop.Hadoop поддерживает распаковку файлов bz2, но произвольно разделяет страницы и отправляет их в маппер.Поскольку это xml, нам нужно, чтобы разбиения были тегами.Есть ли в любом случае использовать встроенную декомпрессию bz2 и потоковый xml-рекордер, предоставляемый hadoop вместе?

Ответы [ 2 ]

7 голосов
/ 06 августа 2011

Фонд Викимедиа только что выпустил InputReader для интерфейса потоковой передачи Hadoop, который может читать сжатые файлы полного дампа bz2 и отправлять его вашим картографам. Модуль, отправляемый мапперу, - это не целая страница, а две ревизии (так что вы можете запустить diff для двух ревизий). Это первоначальный выпуск, и я уверен, что будут некоторые ошибки, но, пожалуйста, дайте ему знать и помогите нам протестировать его.

Для этого InputReader требуется Hadoop 0.21, поскольку Hadoop 0.21 поддерживает потоковую передачу файлов bz2. Исходный код доступен по адресу: https://github.com/whym/wikihadoop

0 голосов
/ 18 июля 2011

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

...