我正在尝试使用mapreduce将xml文件从se data dump*加载到hdfs中。这些xml文件由许多 <row>
元素(包含在顶级“类别”中),例如:
<badges>
<row Id="1" UserId="1" Name="Organizer" Date="2009-07-15T06:51:46.370" />
<row Id="2" UserId="3" Name="Organizer" Date="2009-07-15T06:51:46.387" />
<row Id="4" UserId="1" Name="Autobiographer" Date="2009-07-15T06:51:46.447" />
...
</badges>
我希望每个“行”都由一个单独的 map()
功能,并已配置 org.apache.mahout.classifier.bayes.XmlInputFormat
的开始和结束标记如下:
Configuration config = new Configuration();
config.set(XmlInputFormat.START_TAG_KEY, "<row>");
config.set(XmlInputFormat.END_TAG_KEY, "</row>");
但是,这无法解析xml文件,因为 <row>
元素是自动关闭的。我如何让它工作,没有人为地“关闭”自动关闭标签?
链接到se博客而不是直接到数据转储,以防止死链接,以防将来位置发生变化。
1条答案
按热度按时间t98cgbkg1#
这是一个有点丑陋的黑客。更改
START_TAG_KEY
以及END_TAG_KEY
具体如下:“键”被用作分隔符,接受任何字符串,而不仅仅是xml标记。不是一个“干净”的解决方案,可能会停止在未来的实现工作,但它现在就完成了工作。
注意:我是在发帖的时候发现的。事后看来,这一点很明显,但我还是决定继续写这篇文章,以便将来有人会发现它有用。