【发布时间】:2014-06-11 14:34:01
【问题描述】:
我有这样的数据的xml数据库:
<events>
<event id="123">
<location>ABC</location>
<subsystem>Storage</subsystem>
<warning>
<date>2014-04-01</date>
<text>warning1<text/>
</warning>
<warning>
<date>2014-04-02</date>
<text>warning2<text/>
</warning>
<warning>
<date>2014-04-03</date>
<text>warning3<text/>
</warning>
</event>
....
</events>
数据量在增长,所以我想改用 Hadoop 来处理它。假设对于每个事件,我想添加一个额外的节点:
结构化数据如何存储在 Hadoop 中?我可以将它保存在 xml 中,但我没有看到任何支持原生 xml/json 的工具(猪支持 json,但没有列表)。我可以按列将其拆分为不同的文件(一个用于事件,一个用于警告,然后通过事件 ID 加入它们),但是有很多子节点(这只是原始格式的一部分),所以每次都加入它们会有问题的。
新列(级别)可以存储在新生成的带有当前数据的 xml 文件中,也可以存储在新文件中,就像将 event_id 映射到级别一样。将所有数据存储在新的 xml 文件中将需要再次生成 xml 文件,但是每次我需要访问级别时,将其存储为不同的文件都需要加入它们。之间有什么关系(只是以某种格式更新行?)。
如果能够轻松地为几行添加新节点/列,那就太好了(比如当有关键级别时,我想添加额外的注释)。使用 xml 可以轻松完成,但如果有列,则需要为所有行添加新列。
大多数工具仅支持平面结构。有像 Hive 和 HQL 这样的工具,但在我的情况下会有太多的连接,所以我更喜欢将数据保存在单个结构化记录中。是否已经有一些解决方案可以解决这个问题?
【问题讨论】:
标签: xml hadoop hive apache-pig bigdata