大數據必須掌握的三個基本算法

大數據 數據結構 Hadoop 英語 IT火鍋 2017-07-17

一全排序

大數據必須掌握的三個基本算法

Hadoop自帶的Partitioner的實現有兩種,一種為HashPartitioner, 默認的分區方式,計算公式 hash(key)%reducernum,另一種為TotalOrderPartitioner, 為排序作業創建分區,分區中數據的範圍需要通過分區文件來指定。

分區文件可以人為創建,如採用等距區間,如果數據分佈不均勻導致作業完成時間受限於個別reduce任務完成時間的影響。

也可以通過抽樣器,先對數據進行抽樣,根據數據分佈生成分區文件,避免數據傾斜。

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

二單詞共現矩陣算法

大數據必須掌握的三個基本算法

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

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

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


三倒排索引

大數據必須掌握的三個基本算法

大數據必須掌握的三個基本算法

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

相關推薦

推薦中...