2015-10-30 46 views
0

我們在集羣中擁有5年的數據,並且我們每天都在加載數據。每天添加的數據可能包含重複數據,部分修改後的數據等。處理增量數據 - Hadoop

1。如何處理重複數據 - 應該作爲高級編程接口豬,配置單元等的一部分進行處理。

  1. 說出是否有用於查找兩個記錄之間發生更改的用例,以找出該行的關鍵字。

建模數據的最佳方式是什麼,使用hadoop eco系統組件。

回答

0

如何處理重複數據

這是非常難以從HDFS的原始數據刪除重複, 所以我想你的方法是正確的:使用pighive而加載這些數據刪除。

說出是否存在用於查找兩條記錄之間發生更改的用例,以找出該行的關鍵字。

對於這種情況,您是否意味着兩個記錄具有相同的密鑰?

然後你想捕捉什麼樣的變化?

+0

感謝您的快速回復。我們想要捕獲是否有與記錄相關的字段發生變化,並通知利益相關方這種變化 – Nag

0

當你這樣說的時候,當你知道密鑰時,你需要刪除重複項以及兩個記錄之間的增量,你應該有一些標準,在部分改變的數據的情況下刪除哪些數據。

在這兩種情況下,您都可以擁有密鑰句柄和寫入邏輯來刪除重複項。 映射減少似乎是一個不錯的選擇,考慮到基於密鑰的並行性,性能和管理能力。大多數情況下,您的要求可以在減速器中處理

+0

感謝您的快速回復。你的意思是應該在每次數據加載時調用map reduce作業,並在存儲在hdfs之前處理它 – Nag

+0

井地圖減少對hdfs中的數據起作用。更普遍的方式是將其從現有數據庫中轉換爲hdfs,然後使用map reduce對其執行分析。我不確定數據的來源 – Ramzy

+0

我的意思是,mapreduce處理來自hdfs的數據,然後在處理(刪除重複項)後將其存儲在hdfs中。我正在尋找任何可以縮短開發時間並從而縮短時間的高級抽象。 – Nag

0

看看Sqoop-merge是否適合您的使用案例。

來自文檔: 合併工具允許您合併兩個數據集,其中一個數據集中的條目應覆蓋舊數據集的條目。例如,以最後修改模式運行的增量導入將在HDFS中生成多個數據集,並在每個數據集中出現連續較新的數據。合併工具會將兩個數據集「拼合」爲一個,爲每個主鍵創建最新的可用記錄。

+0

數據源是xml文件,sqoop可以處理 – Nag

+0

@srihay sqoop合併需要數據集的主要id,並將新值覆蓋到舊值上。現在,這個值可以是任何東西(XML,JSON,文本等) –