海量資料處理

2022-08-12 08:09:11 字數 708 閱讀 9045

海量資料處理,思路有hash、bitmap、merge、堆、top k(bfprt演算法)、trie樹、布隆過濾器。

hash:對很多資料進行hash,然後取餘乙個正整數n,可以分成n份不同的資料組,每份資料組中資料通過hash演算法得到相同的下標,所以相同的資料一定會分在同一資料組中。

bitmap:為操作,如果為每個資料分配n個bit,那麼每個資料可最多有2^n種情況,在很多資料的情況下,bitmap總長可設為很大並間隔n位分給一格資料。

merge:乙個很大資料量資料排序,分成不同資料組,每組內進行排序,不同組之間進行merge排序。

堆排序:資料量大,而只需要知道最大或最小的幾個,可以用堆排序。

top k: 速度很快(類似快排選乙個基準,不過這個基準選取方式為:n個資料5個一組,每個排序得到組內中位數,各組之間中位數排序得到組間中位數,該中位數為基準,大於該值一邊,小於的另一邊,則最終左邊和右邊都至少有3/10的資料量,遞迴下去最後得到想要的位置)。

trie數(字典樹):用於去重字串。字典樹每個樹枝(兩個節點之間連線)乙個字元,從根節點到葉子節點構成了不同的路徑,每個路徑唯一地表示了乙個字串。

布隆過濾器:使用了bitmap和hash,乙個資料雜湊出n個特徵點,乙個很長的bitmap儲存這些特徵點,用此bitmap上的特徵點去驗證其它資料是否相同。布隆過濾器存在誤差,因為hash可能會衝突,而且布隆過濾器有時會在乙個bitmap上加上多個資料的特徵點,會增加失誤的可能性。

海量資料處理

1 有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有 重複。請用5分鐘時間,找出重複出現最多的前10條。方法1 可以用雜湊表的方法對1千萬條分成若干組進行邊掃瞄邊建雜湊表。第一次掃瞄,取首位元組,尾位元組,中間隨便兩位元組作為hash code,插入到hash table中。並記錄其位址和...

海量資料處理

給定a b兩個檔案,各存放50億個url,每個url各占用64位元組,記憶體限制是4g,如何找出a b檔案共同的url?答案 可以估計每個檔案的大小為5g 64 300g,遠大於4g。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。遍歷檔案a,對每個url求取hash url 1000...

海量資料處理

分而治之 hash對映 hash統計 堆 快速 歸併排序 300萬個查詢字串中統計最熱門的10個查詢。針對此類典型的top k問題,採取的對策往往是 hashmap 堆。hash統計 先對這批海量資料預處理。具體方法是 維護乙個key為query字串,value為該query出現次數的hashtab...