我正在使用安装在windows服务器上的hadoop平台(由hortonworks提供),并用c#对map/reduce文件进行编码。
我有一个输入文件夹,里面有10万个xml文件。我想读取每个xml文件并将每个标记写在一行中。请按照下面的例子。
输入:
<Person>
<a>1</a>
<b>2</b>
<c>3</c>
</Person>
输出1、2、3。。。。
你能提供我的输入,我应该如何读取数据,截至目前。mapper提供了每个文件的单个文件,在这些文件中很难解析单个标记。
2条答案
按热度按时间9o685dep1#
您的第一个任务是找到一种读取xml文件并将其提供给mr作业的方法,因为没有可用于xml文件的内置输入格式。看看这个,如果你需要一些帮助(没有亲自测试他们,但他们看起来不错我)。在作业配置过程中,您将获得start和end标记中的内容作为Map器中的值。提取所需的值并生成输出。hth公司
cgyqldqp2#
我认为您应该研究xmlinputformat来处理mapreduce中的xml文件。您可以指定开始标记和结束标记,在您的情况下分别是和。请查看这个xmlinputformat链接。现在在每个map函数中,您将获得值(即您在问题中提到的值)作为您的单个记录。现在您可以使用xmldomparser(检查这个链接xmldomparser示例)或xmlsax parser xmlsax parser示例来检索所需的子值,并可以将它们作为最终输出。