查询具有多个XML对象的日志文件

时间:2014-11-24 11:58:26

标签: xml hadoop xpath hive xquery

我正在开发一个分析Hadoop中日志文件的项目。这些文件以XML格式存储元数据。问题是,每个文件存储多个请求,因此同一文件中有多个根元素。我无法更改日志文件。有人可以帮助如何使用Hive查询文件? 该文件的一个例子是

  <?xml version="1.0" encoding="UTF-8" ?> 
    <book>
       <title>C Proramming </title>
       <price> 120.00 </price>
    </book> 
    <book>
        <title> Java for Dummies </title>
        <price> 400 </price>
    </book>

现在,有2个根元素,或者更确切地说是没有,因为您希望看到它。我如何继续查询这样的文件?

提前多多感谢。

1 个答案:

答案 0 :(得分:2)

@glenatron指出,这不是一个格式良好的XML文档。如果要将其作为XML处理,则此处只有两个选项:

1)将元素包装在根元素中以创建格式良好的文档

2)将该文件分解为许多小型XML文档。

我不确定您可以使用哪些工具,但如果我是从Java读取它,我可能会创建一个自定义子类InputStream或Reader,以动态为它添加一个start元素(在文档声明之后)和带有结束元素的后缀。通过这种方式,我可以将此流/阅读器提供给任何XML DOM / SAX解析器或XPath / XQuery引擎,并将其视为有效的XML文档。