2014-03-30 39 views
0

我有這個問題,我想由別人來運行,看看我能否以更好的方式處理這個問題。如何有效地處理易失記錄

我們有300個節點集羣,我們每天處理交易信息/記錄。我們每天可以獲得約1000萬筆交易,每筆記錄大小約爲2K字節。

我們目前使用HDFS進行數據存儲,豬和蜂巢進行數據處理。在大多數情況下,我們使用外部配置單元表類型,並按事務創建日期進行分區。

業務是這樣的,我們可能會得到一個數月或數年前創建的交易的更新。例如,我可能會得到一個5年前創建的事務的更新。我們不能忽略這條記錄,而只是爲了一條記錄重新處理相應的分區。

由於這個原因我們每天都會處理1000個分區。還有更多的ETL應用程序使用這些事務表。

我知道這是對hive/hdfs架構的限制。

我相信其他國家也有這個問題,這將是真正有用的,如果你可以分享你可能已經嘗試過的選項,你怎麼在這邊?

+0

沒有人有任何想法嗎? – Sid

回答

0

您不必覆蓋分區:您可以簡單地插入分區。不要在插入命令中包含「覆蓋」。

以下爲日期分區的表,其中我做了一個插入的例子兩倍(不ovewrite!) - 你可以看到記錄在那裏。 。兩次!這樣就顯示分區被追加了,不會被覆蓋/丟棄。

插入表insert_test 這裏不要覆蓋!選擇..

hive> select * from insert_test; 
OK 
name date 
row1 2014-03-05 
row2 2014-03-05 
row1 2014-03-05 
row2 2014-03-05 
row3 2014-03-06 
row4 2014-03-06 
row3 2014-03-06 
row4 2014-03-06 
row5 2014-03-07 
row5 2014-03-07 
row6 2014-03-09 
row7 2014-03-09 
row6 2014-03-09 
row7 2014-03-09 
row8 2014-03-16 
row8 2014-03-16