1.單詞統計
假設你只有一台記憶體2g的筆記本,i5的四核cpu以及4t的硬碟,請設計乙個程式,實現對1t英文資料進行詞頻分析,完成以下兩個小題:
(1)求所有詞的詞頻,把相應的值存入檔案;
(2)找出這些詞裡賣弄出現頻次最高的100個詞,並用**實現
名詞解釋:1t=1024g,為硬碟空間單位,詞頻,每個單詞出現的次數。
解答:
(1).將1t的資料使用雜湊函式對映到10000個檔案當中去,這樣做可以將所有一樣的資料對映到同乙個檔案當中。
依次將10000個文字檔案讀入記憶體,使用hashmap對每乙個文字中每乙個單詞進行詞頻統計,將單詞作為key,單詞出現次數作為value,每讀入乙個單詞,都檢視其在hashmap中是否存在,存在則將value值加1,不存在就將其加入hashmap,並將value值置為1,然後將結果寫入乙個檔案即可。檔案的每一行只儲存乙個單詞以及這個單詞出現的次數,並且二者之間用空格隔開.
(2).要求出現次數最高的100個單詞。可以建立只有100個元素的小根堆來實現目的。首先取出100個元素建立小根堆,繼續從檔案中取出元素與小根堆的堆頂元素進行比較,如果比堆頂元素大,就替換掉堆頂元素,並且重建為小根堆,依次做下去,最後堆中保留的100個元素就是top100.
使用hashmap統計完每個檔案的單詞頻次之後,先用小根堆統計出每個檔案中top100,然後10000個檔案的top100彙總到一起後在使用上述同樣的方法得到最終的top100.
海量資料處理
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...