C++演算法之海量資料處理方法的總結分析

來源:互聯網
上載者:User

海量資料處理中常用到的技術
1. Bloom Filtering
基本的Bloom Filtering支援快速的插入和尋找操作,是一種hash表技術。基本的資料結構非常簡單,容量為m的位元組,k個hash函數,將輸入的n個元素儲存在位元組裡面。
每次插入一個新的元素,先計算該元素的k個hash指,將位元組對應hash值位置為1. 尋找某個元素時,同樣的先計算k個hash值,然後查詢看是否對應位元組中得k位是否都是1,是則斷定元素存在。
基本的Bloom Filtering演算法可以用於允許誤差的快速判重操作。集合的交集、並集的計算。
Bloom Filtering有個改進的版本counting bloom filtering可以支援資料的刪除操作,countering bloom filtering和基本的bloom filtering相比,位元組中每一位的取值擴充成多位,基本的bloom filtering用1bit表示一位。插入一個元素時,所有的k位都加1,刪除時都減1,尋找時如果k個值都大於0則判定為存在。CBF中有個很重要的參數,即每一位的位元為多少。可以通過理論證明,位元一般取4就足夠了,可以支援同一個資料插入16次。
bitmap可以看做bloom filtering的特例
2. Hash表技術
d-left hash hash表負載平衡技術。將hash表分成d段,設計d個hash函數,更具負載選擇一個合適的段存放資料。尋找時要計算d個hash值,分別在d段中找。
常用於統計次數。
3. 堆技術
堆有兩個典型的應用:
多路歸併排序
求TopK
多路歸併排序時,降序排序時用最大堆,升序排序用最小堆。
TopK時,求TopK最大時,用最小堆,求TopK最小時用最大堆。求topK最大時,利用最小堆堆維護K個值,當新掃描的值大於堆頂元素時,堆頂元素刪除,插入新的值。這樣掃描完一遍資料,既可以求得topK最大。
4. 雙層桶(多層桶)設計
hash表技術是一種direct addr 技術,但是當資料範圍分布過廣、且資料量非常大的時候,採用hash表直接direct addr技術就不行了,這是可以使用多層hash技術。將未經處理資料範圍分成小段,每一段記憶體可以裝載,段內可以使用direct addr table技術。可以用多層分級快速定位到小段。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.