XML文件输入映射/减少Hadoop Windows Server

时间:2013-08-02 19:05:19

标签: xml hadoop mapreduce windows-server-2008 hadoop-streaming

我正在研究安装在Windows Server上的Hadoop平台(由HortonWorks提供),并使用C#编写Map / Reduce文件。

我有一个包含100k xml文件的输入文件夹。我想读取每个xml文件并将每个标记写在一行中。请按照以下示例进行操作。

INPUT:

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

OUTPUT 1,2,3 .... ....

截至目前,您能否向我提供有关如何读取数据的信息。 Mapper提供了每个文件的单个文件,很难解析单个标记。

2 个答案:

答案 0 :(得分:0)

您的第一个任务是找到一种方法来读取xml文件并将它们提供给您的MR作业,因为没有可用于xml文件的内置InputFormat。如果您需要帮助,请参阅thisthis(未亲自测试过,但对我来说看起来不错)。您将在作业配置期间将您提供的开始和结束标记内的内容作为映射器中的值。提取所需的值并生成输出。 HTH

答案 1 :(得分:0)

我认为你应该研究XMLInputFormat来处理mapreduce中的xml文件。您可以分别指定在您的情况下的开始和结束标记。请查看此XMLInputFormat Link。现在,在每个地图功能中,您将获得作为单个记录的值(即您在问题中提到的值)。现在,您可以使用XML DOM解析器(请检查此链接XML DOM parser example)或XML SAX Parser XML SAX parser example来检索所需的子值,并将这些值作为最终输出发出。