0

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

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

输入:

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

输出 1,2,3 .... ...

能否请您提供有关我应该如何读取数据的意见,截至目前。Mapper 提供了每个文件的单独文件,其中难以解析单独的标签。

4

2 回答 2

0

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

于 2013-08-02T19:51:24.087 回答
0

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

于 2013-08-05T06:02:42.897 回答