我正在Windows Server上安装Hadoop平台(由HortonWorks提供),并用C#编写Map/Reduce文件。
我有一个输入文件夹,里面有10万个xml文件。我想读取每个xml文件,并将每个标记写在一行中。请遵循以下示例。
输入:
<Person>
<a>1</a>
<b>2</b>
<c>3</c>
</Person>
输出1,2,3。。。。……
你能给我提供关于我现在应该如何阅读数据的意见吗。Mapper提供了每个文件的单独文件,其中很难解析单独的标记。
您的第一个任务是找到一种读取xml文件的方法,并将它们提供给MR作业,因为没有可用于xml文件的内置InputFormat。如果你需要帮助,可以看看这个和这个(我还没有亲自测试过,但在我看来还可以)。您将获得在作业配置期间提供的开始和结束标记中的内容,作为映射器中的值。提取所需的值并生成输出。HTH
我认为您应该研究XMLInputFormat来处理mapreduce中的xml文件。您可以指定开始和结束标记,在您的情况下分别为和。请查看此XMLInputFormat链接。现在,在每个映射函数中,您将获得值(即您在问题中提到的值)作为您的单个记录。现在,您可以使用XMLDOM解析器(查看此链接的XMLDOM解析器示例)或XMLSAXParserXMLSAX解析器示例来检索所需的子值,并可以将这些子值作为最终输出发出。