適用範圍:第k大,中位數,不重複或重複的數字
基本原理及要點:因為元素範圍很大,不能利用直接定址表,所以通過多次劃分,逐步確定範圍,然後最後在乙個可以接受的範圍內進行。可以通過多次縮小,雙層只是乙個例子。
擴充套件:
問題例項:
1).2.5億個整數中找出不重複的整數的個數,記憶體空間不足以容納這2.5億個整數。
有點像鴿巢原理,整數個數為2^32,也就是,我們可以將這2^32個數,劃分為2^8個區域(比如用單個檔案代表乙個區域),然後將資料分離到不同的區域,然後不同的區域在利用bitmap就可以直接解決了。也就是說只要有足夠的磁碟空間,就可以很方便的解決。
2).5億個int找它們的中位數。
這個例子比上面那個更明顯。首先我們將int劃分為2^16個區域,然後讀取資料統計落到各個區域裡的數的個數,之後我們根據統計結果就可以判斷中位數落到那個區域,同時知道這個區域中的第幾大數剛好是中位數。然後第二次掃瞄我們只統計落在這個區域中的那些數就可以了。
實 際上,如果不是int是int64,我們可以經過3次這樣的劃分即可降低到可以接受的程度。即可以先將int64分成2^24個區域,然後確定區域的第幾 大數,在將該區域分成2^20個子區域,然後確定是子區域的第幾大數,然後子區域裡的數的個數只有2^20,就可以直接利用direct addr table進行統計了。
6.資料庫索引
適用範圍:大資料量的增刪改查
基本原理及要點:利用資料的設計實現方法,對海量資料的增刪改查進行處理。
擴充套件:
問題例項:
7.倒排索引(inverted index)
適用範圍:搜尋引擎,關鍵字查詢
基本原理及要點:為何叫倒排索引?一種索引方法,被用來儲存在全文搜尋下某個單詞在乙個文件或者一組文件中的儲存位置的對映。
以英文為例,下面是要被索引的文字:
t0 = "it is what it is"
t1 = "what is it"
t2 = "it is a banana"
我們就能得到下面的反向檔案索引:
"a":
"banana":
"is":
"it":
"what":
檢索的條件"what", "is" 和 "it" 將對應集合的交集。
正 向索引開發出來用來儲存每個文件的單詞的列表。正向索引的查詢往往滿足每個文件有序頻繁的全文查詢和每個單詞在校驗文件中的驗證這樣的查詢。在正向索引 中,文件佔據了中心的位置,每個文件指向了乙個它所包含的索引項的序列。也就是說文件指向了它包含的那些單詞,而反向索引則是單詞指向了包含它的文件,很 容易看到這個反向的關係。
擴充套件:
問題例項:文件檢索系統,查詢那些檔案包含了某單詞,比如常見的學術**的關鍵字搜尋。
8.外排序
適用範圍:大資料的排序,去重
基本原理及要點:外排序的歸併方法,置換選擇 敗者樹原理,最優歸併樹
擴充套件:
問題例項:
1).有乙個1g大小的乙個檔案,裡面每一行是乙個詞,詞的大小不超過16個位元組,記憶體限制大小是1m。返回頻數最高的100個詞。
這個資料具有很明顯的特點,詞的大小為16個位元組,但是記憶體只有1m做hash有些不夠,所以可以用來排序。記憶體可以當輸入緩衝區使用。
9.trie樹
海量資料處理分析總結
海量的資料處理問題,對其進行處理是一項艱鉅而複雜的任務。原因有以下幾個方面 一 資料量過大,資料中什麼情況都可能存在。如果說有10條資料,那麼大不了每條去逐一檢查,人為處理,如果有上百條資料,也可以考慮,如果資料上到千萬級別,甚至過億,那不是手工能解決的了,必須通過工具或者程式進行處理,尤其海量的資...
海量資料處理分析方法
2008 08 06 08 04 海量資料是發展趨勢,對資料分析和挖掘也越來越重要,從海量資料中提取有用資訊重要而緊迫,這便要求處理要準確,所以,對海量資料的研究很有前途,也很值得進行廣泛深入的研究。在實際工作中,有幸接觸到海量的資料處理問題,對其進行處理是一項艱鉅而複雜的任務。原因有以下幾個方面 ...
海量資料處理方法歸類
解決思路 典型的top k演算法。模板 先用hashmap統計頻率 或去重 維護乙個k大小的堆,統計top k就行了。解決思路 可以估計每個檔案安的大小為5g 64 320g,遠遠大於記憶體限制的4g。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。遍歷檔案a,對每個url求取hash...