1. 程式人生 > >大資料必須掌握的三個基本演算法

大資料必須掌握的三個基本演算法

一全排序

大資料必須掌握的三個基本演算法

Hadoop自帶的Partitioner的實現有兩種,一種為HashPartitioner, 預設的分割槽方式,計算公式 hash(key)%reducernum,另一種為TotalOrderPartitioner, 為排序作業建立分割槽,分割槽中資料的範圍需要通過分割槽檔案來指定。

 

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:199427210,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系

分割槽檔案可以人為建立,如採用等距區間,如果資料分佈不均勻導致作業完成時間受限於個別reduce任務完成時間的影響。

也可以通過抽樣器,先對資料進行抽樣,根據資料分佈生成分割槽檔案,避免資料傾斜。

注意,key可以是數字型,也可以是BinaryComparable(字串),當是BinaryComparable時,則以key構造Trie Tree;否則以二分查詢來確定key的所屬區間。

二單詞共現矩陣演算法

大資料必須掌握的三個基本演算法

其目的是在海量語料庫中發現在固定視窗內單詞a和單詞b共同出現的頻率,從而構建單詞共現矩陣,這樣的矩陣可以是對稱的,也可以是不對稱的,這要看具體的應用。

這種抽象化的任務的有效解決在實際生活中有著很多的應用。例如電子商家希望發現不同物品被同時購買的情況以便有效安排貨物的擺放位置;同時對資訊檢索領域同義詞詞典的構建以及文字挖掘等都有著重要的實際應用價值。

根據同現關係的不同,可能需要實現和定製不同的FileInputFormat和RecordReader,如同現關係為一個英文句子,則需要實現以一個英文句子為單位的FileInputFormat和RecordReader,如同現關係為一個段落,則需要實現以一個段落為單位的FileInputFormat和RecordReader


三倒排索引

大資料必須掌握的三個基本演算法

大資料必須掌握的三個基本演算法

Inverted Index(倒排索引)是目前幾乎所有支援全文檢索的搜尋引擎都要依賴的一個數據結構。基於索引結構,給出一個詞(term),能取得含有這個term的文件列表(the list of documents),沒什麼可說的,必須掌握。