【问题标题】:process HTML files using hadoop map reduce使用 hadoop map reduce 处理 HTML 文件
【发布时间】:2013-10-11 01:11:37
【问题描述】:

我在 hdfs 中有一个包含数千个 HTML 文件的输入文件夹:

/data/htmls/1/(HTML files)
/data/htmls/2/(HTML files)
.
.
/data/htmls/n/(HTML files)

我有一个 java 函数,它将 HTML 文件作为输入并解析它,我想在映射器函数中读取这些 HTML 文件并将它们作为输入提供给解析器函数。因为输入文件是由map函数逐行处理的,有没有办法处理HTML文件?

【问题讨论】:

  • 逐行读取它们的事实是您正在使用的 InputFormat 的一个特性。您可以编写自己的(或者我想已经编写了 XML 输入格式)来处理整个 HTML 文件
  • 输入文件有多大?如果它们与块大小相比较小,您可以查找 NLinesRecordReader 并修改它以读取完整的 html 文件。我做了那些类似的事情。

标签: java html hadoop mapreduce


【解决方案1】:

我不确定它的效果如何,但 Mahout XmlInputFormat 是一个不错的 XML 阅读器。您也许可以将其调整为适用于 HTML。

在创建 Job 对象之前在配置中设置以下内容:

conf.set("xmlinput.start", "<tag>");
conf.set("xmlinput.end", "</tag>");

然后在创建job对象后通过以下方式设置输入类:

job.setInputFormatClass(XmlInputFormat.class);

这将选择指定标签内的所有内容作为单个输入字符串。

例如,如果您选择 &lt;html&gt; and &lt;/html&gt;(或 &lt;body&gt; &lt;/body&gt; 或任何其他匹配的标签对)作为开始和结束标签,您应该将其中的所有内容作为一条记录传递给映射器。

希望这有帮助。

【讨论】:

    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多