倒排索引和MapReduce簡介

2021-06-27 20:20:48 字數 1625 閱讀 8785

1.前言

學習hadoop的童鞋,倒排索引這個演算法還是挺重要的。這是以後展開工作的基礎。首先,我們來認識下什麼是倒排索引:

2.mapreduce框架簡介

2.1inputformat類

inputformat類的作用是什麼呢?其實就是把輸入的資料(就是你上傳到hdfs的檔案)切分成乙個個的split,然後將split分拆成對做為map函式的輸入。hadoop裡預設使用textinputformat類處理輸入(這個類只處理文字檔案)。textinputformat類將文字檔案的多行分割成多個split,並通過linerecorderreader將其中的每一行解析成對,key為該行在文字中的偏移量,value值為這一行的內容。例如下面乙個text.txt文字,經過inputformat類處理之後

如上圖text1.txt文件,經過inputformat處理之後,形成了3個對,這3對之中,第一對中key=0,是因為hello單詞位於文字頭。第二對中key=31,是因為下一行的首單詞if相對整個文字,它位於31的位置。類似第三對也如此。您可以自己數下並知道。

這3個對做為map函式的輸入,然後你可以根據需要在對輸入的對進行處理。

實現map函式,根據輸入的對生成中間結果。這裡以wordcount例子來說,對於上面的text.txt文件經過inputformat處理之後,上面3對對輸入map之後,輸出過程如下:

圖2 map處理過程

2.3partition過程

partition就是分割槽。為什麼要分割槽呢?因為大多時候有多個reducer,分割槽的作用就是對map的輸出,redcue的輸入進行預處理。最重要的就是處理到在輸入reduce的資料,保證同乙個key值被分到同乙個reduce。mapreduce程式中,partition決定map節點的輸出將分割槽到那個reduce節點上。預設是使用hashpartition,根據key值進行hash操作。

圖3 partition分割槽過程

仔細觀察partition分割槽過程,text1.txt和text2.txt的partition1分割槽中有相同的key。這就是分割槽的效果,把相同的key放在同乙個分割槽裡。

2.4 sort過程

sort過程就是把鍵值對按照key值的首字母進行排序。

2.5 combin類

2.6 reduce類

reduce過程是整合的過程,當然像wordcount的例子,我們只需要統計單詞個數而已,只需乙個簡單的統計迴圈。

MapReduce倒排索引簡單實現

倒排索引 倒排索引是文件檢索系統中最常用的資料結構,被廣泛的應用於全文搜尋引擎。它主要用來儲存某個單詞 或片語 在乙個文件或一組文件中的儲存位置的對映,即提供了一種根據內容來查詢文件的方式,由於不是根據文件來確定文件所包含的內容,而是進行了相反的操作,因而被稱為倒排索引。例如 input 輸入有三個...

MapReduce練習之倒排索引

實現統計多個文件中乙個單詞出現的頻數和出現在哪個文件中 在map中讀取當前文件的每一行資料,得到當前文件路徑 mapkey 單詞 文件路徑 mapvalue 數值1 在map端設定combiner類 整合資料,減少向reduce端傳輸資料的網路開銷 將map的輸出重新組合輸出 單詞,文件路徑 單詞頻...

mapreduce在倒排索引中練習

倒排索引是檔案檢索系統中常用的資料結構,被廣泛應用於全文章搜尋引擎。通常情況下,倒排索引由乙個單詞或片語以及相關的文件列表組成,文件列表中的文件或者是標識文件的id 號,或者是指定文件所在位置的 uri 在實際應用中,往往還需要給每個文件加乙個權值,用來指出每個文件與搜尋內容的相關度 我的例子中,文...