一道經典大數據面試題(2)——如何找出訪問百度最多的IP

題目描述:函數

        現有海量日誌數據保存在一個超級大的文件中,該文件沒法直接讀入內存,要求從中提取某天訪問百度次數最多的那個IP。日誌

分析解答:
        因爲這道題只關心某一天訪問BD最多的IP,所以能夠首先對文件進行一次遍歷,把這一天訪問BD的IP的相關信息記錄到一個單獨的文件中。接下來能夠用上一篇介紹的方法來求解。其求解思路是同樣的。惟一須要肯定的是把一個大文件分爲幾個小文件比較合適。以IPV4爲例,因爲一個IP地址佔用32位,所以最多會有2^32=4G種取值狀況。若是使用hash(IP)%1024值,那麼把海量IP日誌分別存儲到1024個小文件中。這樣,每一個小文件最多包含4M個IP地址。若是使用2048個小文件,那麼每一個文件會最多包含2M個IP地址。所以,對於這類題目而言,首先須要肯定可用內存的大小,而後肯定數據大小。由這兩個參數就能夠肯定Hash函數應該怎麼設置才能保證每一個文件的大小都不超過內存的大小,從而能夠保證每一個小的文件都能被一次性加載到內存中。內存

相關文章
相關標籤/搜索