我有這樣的數據的XML數據庫:Hadoop和結構化數據
<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來處理它。假設對於每個事件,我想添加一個額外的節點:<級別...... </level>基於< warning>節點。所以現在有多個問題需要解決:
如何在Hadoop中存儲結構化數據?我可以保留在XML中,但我沒有看到任何工具與本機XML/JSON支持(豬支持JSON,但沒有列表)。我可以將它按列分割成不同的文件(一個用於事件,一個用於警告,然後通過事件ID加入),但是有很多子節點(這只是原始格式的一部分),所以每次都加入它們會有問題。
新列(級別)可以存儲在具有當前數據的新生成的xml文件中,或者可以像將event_id映射到級別一樣存儲在新文件中。將所有數據存儲在新的xml文件中將需要再次生成xml文件,但將其存儲爲不同的文件需要每次需要訪問級別時加入它們。之間有什麼(只是更新某些格式的行?)。
能夠輕鬆地爲少數行添加新節點/列會很好(比如當我想添加額外的註釋時有臨界級別)。它可以用xml輕鬆完成,但如果有列,則需要爲所有行添加新列。
大多數工具只支持扁平結構。還有像蜂巢與HQL工具,但會有在我的案例太多的加入,所以我prefere將數據保存在單一的結構化記錄。有沒有解決這個問題的解決方案?