我在 hdfs 中有一个输入文件夹,其中包含数千个 HTML 文件:
/data/htmls/1/(HTML files)
/data/htmls/2/(HTML files)
.
.
/data/htmls/n/(HTML files)
我有一个 java 函数,它将 HTML 文件作为输入并解析它,我想在映射器函数中读取这些 HTML 文件并将它们作为输入提供给解析器函数。因为输入文件是由 map 函数逐行处理的,有没有办法处理 HTML 文件?
我不确定它的效果如何,但 Mahout XmlInputFormat是一个不错的 XML 阅读器。您也许可以将其调整为适用于 HTML。
在配置中,在创建 Job 对象之前设置以下内容:
conf.set("xmlinput.start", "<tag>");
conf.set("xmlinput.end", "</tag>");
然后在创建作业对象后通过以下方式设置输入类:
job.setInputFormatClass(XmlInputFormat.class);
这将选择指定标签内的所有内容作为单个输入字符串。
例如,如果您选择<html> and </html>
(或<body> </body>
任何其他匹配的标签对)作为开始和结束标签,您应该将其中的所有内容作为单个记录传递给映射器。
希望这会有所帮助。