【问题标题】:Hadoop MapReduce with RDF/XML files带有 RDF/XML 文件的 Hadoop MapReduce
【发布时间】:2013-06-15 07:14:50
【问题描述】:

所以我有十个不同的文件,每个文件看起来像这样。

<DocID1>    <RDF Document>
<DocID2>    <RDF Document>
.
.
.
.
<DocID50000>    <RDF Document>

实际上每个文件大约有 56,000 行。每行都有一个文档 ID 和一个 RDF 文档。

我的目标是将每个映射器作为输入键值对传递给每个映射器,并为输出键值对发出多个。在 reduce 步骤中,我会将这些存储到 Hive 表中。

我有几个问题要开始了,我对 RDF/XML 文件完全陌生。

  1. 我应该如何解析文档的每一行以分别传递给每个映射器?

  2. 是否有控制映射器输入大小的有效方法?

【问题讨论】:

    标签: java xml hadoop mapreduce rdf


    【解决方案1】:

    1- 如果您使用 TextInputFormat,您会在每个映射器中自动获得 1 行(1 个拆分)作为值。将此行转换为字符串并进行所需的处理。或者,您可以使用 StreamXmlRecordReader 来使用 Hadoop Streaming API。您必须提供开始和结束标记,并且夹在开始和标记之间的所有信息都将被提供给映射器(在您的情况下为 &lt;DocID1&gt;&lt;RDF Document&gt;)。

    Usage :
    
    hadoop jar hadoop-streaming.jar -inputreader "StreamXmlRecord,begin=DocID,end=RDF Document" ..... (rest of the command)
    

    2- 你为什么需要它?您的目标是向映射器提供完整的一行。这是您正在使用的 InputFormat 的工作。如果您仍然需要它,您必须为此编写自定义代码,对于这种特殊情况,它会有点棘手。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多