首先看看資料重複率,若重複率很高,可以直接在記憶體中將資料存進hashmap,然後利用最大堆求出出現次數最多的k個資料。
將大檔案用hash劃分為多個小檔案,如果小檔案還超出了所需記憶體怎麼辦?沒事,再對其進行hash,將其分為更多的小檔案。如果多次hash檔案大小仍然超出記憶體,就不用管它了,因為這說明那個檔案內的陣列重複率非常高。
分別對每個小檔案用hashtable統計資料頻率。
用最大堆對其排序。
將大檔案直接分割為多個小檔案。
分別對小檔案進行內排序。
採用敗者樹進行多路合併。
若是對頻率排序,還是得先用hash分割,再統計頻率,視統計結果確定對其直接排序或者外排序。
用相同的hash函式分別對這兩個檔案進行hash。編號為a1,a2,a3……和b1,b2,b3……
分別對對應的小檔案進行hash查詢。
乙個檔案中查詢在另乙個檔案中沒有出現過的數:
在資料位數較小,如32位整型情況下,可以採用bitmap,將整型所有數對映為bitmap上對應的位。
乙個檔案中查詢沒有重複的數:
使用2bitmap,00代表沒有出現過,01代表出現過一次,10代表重複多次。
資料位數較大,bitmap無法儲存,採用布隆過濾器。利用多個hash函式對映到多個bitmap上。
面試題 大資料處理
1 給乙個超過100g大小的log file log中存著ip位址,設計演算法找到出現次數最多的ip位址?我們先考慮一下,100g大小的檔案,一般是無法存到普通的計算機中的,我們的硬碟根本沒這麼大 2 用檔案的前k個數建小堆 3 用k 1個數和堆頂相比,大的話替換,調整堆 3 給定100億個整數,設...
大資料處理面試題
題目 解決方法 ip位址最多有232 2 32 232種取值情況,所以不能完全載入到記憶體中處理 可以考慮採用 分治 的思想,按照ip位址的hash ip 1024值,將海量ip日誌分別儲存到1024個小檔案中。這樣,每個小檔案最多包含4mb個ip位址 對於每個小檔案,可以構建乙個ip為key,出現...
海量資料處理面試題
海量資料處理思路分析題 1.給乙個超過100g大小的log file,log中存著ip位址,設計演算法找到出現次數最多的ip位址?解決方法 雜湊切割topk。將100g的大檔案分成1000份,根據同乙個雜湊函式hashfunc將ip對映到向對應的檔案 每個檔案的大小可以在記憶體中處理 中,相同的ip...