我一直在 hadoop 集群上执行分布式 XML 解析。我在我的 map-reduce 程序中使用这个 XmlInputFormat 。它工作得很好,我真诚地感谢那个贡献者。
但是,这是我遇到的问题:
在测试这几个 map-red 作业时,由于以下 XMLStreamException 而失败。
java.io.IOException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[21,69]
Message: The entity name must immediately follow the '&' in the entity reference.
at org.apache.hadoop.examples.XMLRecordCount$Map.map(XMLRecordCount.java:197)
at org.apache.hadoop.examples.XMLRecordCount$Map.map(XMLRecordCount.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:214)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[21,69]
Message: The entity name must immediately follow the '&' in the entity reference.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594)
at org.apache.hadoop.examples.XMLRecordCount$Map.map(XMLRecordCount.java:168)
据我了解,这是由于数据中的字符 & 造成的。例如 -"<name>Alen & Bob </name>"
我正在处理包含上述数据的日志。但正因为如此,整个工作都失败了。
我可以将预处理视为一种解决方案,但对我来说可能不是一个有效的选择。
您能否建议我一种方法来跳过此类不良记录/或仅替换 Java XML api 中的此类字符?