1. 程式人生 > >海量數據處理常用方法有哪些?

海量數據處理常用方法有哪些?

大數據開發 大數據 Hadoop 海量數據

處理海量數據是大數據工程師必備技能,通過對PB級別的數據進行挖掘與分析發掘出有價值的信息,為企業或政府做出正確決策提供依據,是十分必要的一項工作,以下是常用的海量數據處理方法!

1. Bloom filter

Bloom filter是一種二進制向量數據結構,具有很好的空間效率和時間效率,可用來檢測一個元素是否屬於一個集合。該方法的優點是它的插入和查詢時間都是常數,並且它查詢元素卻不保存元素本身,因此,具有良好的安全性,但因其算法的原因,其正確率稍低,可以確定不存在數據一定不存在,確定存在的數據不一定存在,適合對低錯誤率可以容忍的場合。

2. Hash

Hash即散列函數,其是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數,根據處理需求的不同,有不同的

Hash函數,針對字符串、整數、排列也具有相應的Hash方法,常用的Hash構造方法有直接尋址法、數字分析法、平方取中法、折疊法、隨機數法以及除留余數法等。

3. BitMap

BitMap是使用數組來表示某些數據是否存在的方法,可對數據進行快速查找、判斷和刪除操作,一般來說數據範圍是int10倍以下,Bloom可以看做是對BitMap的擴展。

4.

堆是計算機科學中的一種特殊的數據結構的統稱,統稱是一個可以被看做一顆樹的數組對象,其原理是先從待找的n個數字中找出前k個建成小頂堆,然後依次讀後面的元素並與小頂堆的堆頂進行比較,如果當前元素小或相等,則繼續讀後面的元素;如果當前的元素大,則用當前元素替換堆頂元素,然後調整小頂堆。最大堆求前

k小,最小堆求前k大,雙堆,求中位數。

5. 雙層桶

雙層桶不是一種數據結構,而是一種算法思想,類似於分治思想。因為元素範圍很大,不能利用直接尋址表,所以通過多次劃分,逐步確定範圍,然後最後在一個可以接受的範圍內進行。雙層桶法一般適用於尋找第k個大的數,尋找中位數、尋找不重復或重復的數字。

6. 數據庫優化法

海量數據都被存儲在數據庫中,如何從數據庫中提取有用信息就需要用到數據庫優化法,常見的數據庫優化方法有數據分區、索引、緩存機制、分批處理、優化查詢語句、使用采樣數據進行數據挖掘等。

7. 倒排索引

倒排索引是目前搜索引擎公司對搜索引擎最常用的存儲方式,被用來存儲在全文搜索下某個單詞在一個文檔或者一組文檔中的存儲位置的映射。在處理復雜的多關鍵字時,可在倒排表中完成查詢的並、交等邏輯運算,得到結果後再對結果進行存取,這樣把記錄的查詢轉換為地址集合的運算,不必對每個記錄隨機存取,從而提高查找速度。

8. 外排序

外排序是對大文件的排序,由於內存限制,不能一下子把所有的待排內容都讀到內存中進行排序,需要在內存和外部存儲器之間進行多次數據交換才能達到對整個文件進行排序的目的,常用的外排序法是歸並排序法,即首先生成若幹個子文件,分別對這些子文件進行排序,然後對這些子文件進行多次歸並,使得有序的歸並段主鍵擴大,最後在外存上形成整個文件的單一歸並段。

外排序適用於大數據的排序以及去重,但外排序的缺陷是回消耗大量的IO,效率不高。

9. Trie

Trie樹是一種用於快速字符串檢索的多叉樹結果,原理是利用字符串的公共前綴來減少空間開銷。經常被搜索引擎系統用於文件詞頻統計。優點是:最大限度地減少無謂的字符串比較,查詢效率比散列表高。適合用於數據量大,重復多,但是數據種類小可以放入內存的情況。

10. MapReduce

MapReduce是雲計算的核心技術之一,是一種簡化並行計算的分布式編程模型,主要目的是為了大型集群的系統能在大數據集上進行並行工作,並用於大規模數據的並行運算。

以上是處理海量數據常用的方法,可以根據需處理的數據特點進行選擇使用!


海量數據處理常用方法有哪些?