Карта ввода XML-файла/сокращение Hadoop Windows Server

Я работаю над платформой Hadoop (от HortonWorks), установленной на Windows Server, и кодирую файлы Map/Reduce на С#.

У меня есть входная папка с файлами 100k xml. Я хочу прочитать каждый файл xml и записать каждый тег в одну строку. Пожалуйста, следуйте приведенному ниже примеру.

ВХОД:

<Person>
    <a>1</a>
    <b>2</b>
    <c>3</c>
</Person>

ВЫХОД 1,2,3 .... ....

Не могли бы вы предоставить мне информацию о том, как я должен читать данные на данный момент. Mapper поставляется с отдельными файлами каждого файла, где трудно разобрать отдельные теги.


person Varun Gupta    schedule 02.08.2013    source источник


Ответы (2)


Вашей первой задачей будет найти способ чтения XML-файлов и передать их вашему заданию MR, поскольку для xml-файлов нет встроенного InputFormat. См. это и это, если вам нужна помощь (не проверял их лично, но они выглядят нормально). Вы получите содержимое начального и конечного тегов, предоставленных вами во время настройки задания, в качестве значений в вашем преобразователе. Извлеките нужные значения и сгенерируйте вывод. ХТН

person Tariq    schedule 02.08.2013

Я думаю, вам следует изучить XMLInputFormat для работы с файлами xml в mapreduce. Вы можете указать начальный и конечный теги, которые в вашем случае будут и соответственно. Пожалуйста, взгляните на этот Ссылка XMLInputFormat. Теперь внутри каждой функции карты вы получите значение (то есть то, которое вы упомянули в своем вопросе) в качестве вашей единственной записи. Теперь вы можете использовать анализатор XML DOM (см. эту ссылку пример синтаксического анализатора XML DOM) или синтаксический анализатор XML SAX пример синтаксического анализатора XML SAX, чтобы получить необходимые дочерние значения, и вы можете выдать их в качестве окончательного вывода.

person Binary01    schedule 05.08.2013