【问题标题】:StreamXmlRecordReader not working properly in hadoopStreamXmlRecordReader 在 hadoop 中无法正常工作
【发布时间】:2012-09-13 12:55:47
【问题描述】:

使用 hadoop 我尝试将以下 xml 拆分到单独的节点中

<?xml version="1.0" encoding="UTF-8" ?>
<pages>
    <page>
            <title>Sourav</title>
    </page>
    <page>
            <title>Gaurav</title>
    </page>
    <page>
            <title>sachin</title>
    </page>
    <page>
            <title>Rahul</title>
    </page>
</pages>

喜欢

<page>
        <title>abc</title>   
</page>

我通过以下命令运行它

hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.0.1.jar -inputreader "StreamXmlRecordReader,begin=<page>,end=</page>" -input /usr/root/xml  -output /usr/root/xmloutput

但我得到的不是四个单节点

<page>
    <title>Sourav</title>
</page> 
<page>
    <title>Gaurav</title>
</page> 
<page>
    <title>sachin</title>
</page> 
<page>
    <title>Rahul</title>
</page> 

<page>
    <title>sachin</title>
</page> 
<page>
    <title>Rahul</title>
</page> 

我做错了吗? 感谢您对我做错的任何见解。

【问题讨论】:

    标签: xml hadoop-streaming


    【解决方案1】:

    不,你没有做错任何事。

    这是 Hadoop Streaming 中一个令人讨厌的错误。

    https://issues.apache.org/jira/browse/MAPREDUCE-577
    

    这是 0.20 中的一个已知错误,但他们说它已在 0.22 中修复。我不知道,但不幸的是它在 1.0.4 中再次被破坏。

    与此同时,您可以将 xml 预处理为更好的流式处理。

    【讨论】:

    • 非常感谢!我已经浪费了几个小时想知道为什么我的 Mapper 需要这么长时间来执行相对简单的代码。在 CDH4 中,有两个版本:0.20(旧 API)和 2.0.0(新 API)。新版本不包括 StreamXMLRecordReader。你知道有什么更好的使用方法吗?
    • 不,抱歉。我在 hadoop 之外预处理我的 XML 并将 XML 转换为 CSV。这可能对您的情况没有帮助,但如果您有资源,它可能是一种选择。另一种选择是获取 hadoop 的源代码并自行实现 StreamXmlRecordReader,其中明显的错误修复已进入 0.22。
    猜你喜欢
    • 2020-03-07
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2021-04-08
    相关资源
    最近更新 更多