海量資料處理演算法(top K問題)

2021-09-02 16:28:49 字數 398 閱讀 7161

有乙個1g大小的乙個檔案,裡面每一行是乙個詞,詞的大小不超過16位元組,記憶體限制大小是1m。返回頻數最高的100個詞。

1.分治:

順序讀檔案中,對於每個詞c,取hash(c)%2000,然後按照該值存到2000個小檔案中。這樣每個檔案大概是500k左右。

如果其中的有的檔案超過了1m大小,還可以按照類似的方法繼續往下分,直到分解得到的小檔案的大小都不超過1m。

2.hash遍歷:

對每個小檔案,用hash的方式統計每個檔案中出現的詞以及相應的頻率

3.堆遍歷:

用 最小堆取出出現頻率最大的100個詞,並把100個詞及相應的頻率存入檔案,這樣又得到了5000個檔案。

4.歸併整合

下一步就是把這5000個檔案進行歸併(類似與歸併排序)的過程了。

海量資料處理 (top K問題)

前兩天面試3面學長問我的這個問題 想說teg的3個面試學長都是好和藹,希望能完成最後一面,各方面原因造成我無比想去鵝場的心已經按捺不住了 這個問題還是建立最小堆比較好一些。先拿10000個數建堆,然後一次新增剩餘元素,如果大於堆頂的數 10000中最小的 將這個數替換堆頂,並調整結構使之仍然是乙個最...

海量資料處理 top K

區域性淘汰法 用乙個容器儲存前 10000個數,然後將剩餘的所有數字一一與容器內的最小數字相比,如果所有後續的元素都比容器內的 1000個數還小,那麼容器內的這 10000個數就是最大的 10000個數。如果某一後續元素比容器內的最小數字大,則刪掉容器內最小元素,並將該元素插入容器,最後遍歷完這1億...

海量資料處理(查重,topk)

求top k 對記憶體有限制的大資料處理 查重 就是在一組海量資料中,查詢重複的資料,一般的解題思路就是雜湊表 名稱特點 unordered set 單重集合,只存放key,不允許key重複 unordered multiset 多重集合,只存放key,允許key重複 unordered map 單...