我已經開始使用以JSON格式到達的大型數據集。不幸的是,提供數據饋送的服務提供了不平凡數量的重複記錄。另一方面,每條記錄都有一個唯一的Id號碼存儲爲64位正整數(Java long)。如何從大數據饋送中排除重複記錄?
數據每週到達一次,每次交付約爲10M條記錄。我需要排除當前交付中的重複項以及之前批次中的記錄。
攻擊重複數據刪除問題的蠻力方法是將Id號碼推送到Java Set。由於設置接口需要唯一性,插入過程中的失敗將表明重複。
現在的問題是:有沒有更好的方法來尋找重複的長作爲我導入記錄?
我正在使用Hadoop來挖掘數據,所以如果有一種很好的方法可以使用Hadoop來重複記錄,那將是一種獎勵。
這是比Rolands更好的解決方案。 –
@salexander - 我可以爲新批數據做到這一點,但是如何識別前幾周現有記錄的重複項。例如,以前的數據有ID [1..10];新數據包含[11,11,9]。 map/reduce作業會找到重複的11,但9在這個集合中是唯一的,但與整個集合相比不是這樣。我知道我可以重新運行整個數據集,但這看起來很愚蠢。 – gras
在這種情況下,我們需要將所有密鑰放在一個簡化器中,這可能會減慢過程 – sunitha