MapReduce算法例析——連接算法

這是中國大學MOOC大數據算法的課程筆記

這一講是MapReduce一些相對複雜的應用


本講分爲兩個部分:

連接(Join)算法

圖算法


圖算法在後一篇文章中講述。


連接算法


笛卡爾積定義如下


在笛卡爾積上添加約束條件後的運算就是連接操作。如Theta連接和自然連接。連接在數據庫中是比較昂貴的操作。



下面是Hash Join用MapReduce的實現:



對於兩個表分別進行上述MapReduce過程操作:

將原表分塊,mapper按Hash值將其劃分爲不同的Hash桶,然後reducer根據不同的Hash值將桶聚合。

這樣兩個表的第一個reducer生成的結果對應相同的Hash桶,再把它們放到同一個merger中進行hash join。


使用MapReduce處理多個連接的操作,h取1到m的範圍數,Reducer取連接操作數的平方。


另一個例子是Hive中的repartition join


做連接的鍵是key,剩下的作爲value,在經過map以後,把這些pairs根據key進行分組,把具有相同key的元組分到同一個組當中(兩個表有相同key的元組)。在Reduce階段,根據表名做劃分後就可以做笛卡爾積。



多路連接的處理:將連接屬性相同的項放入同一個Reducer中。


相似連接對應相似查詢,如搜索輸入

這比一般的自然連接要慢。



用MR進行多重集相似連接的算法


Jaccard相似性:交集比並集


Cosine相似性:交集/兩個集合大小之和的平方根


Dice相似性等


兩種MR的工作

1、計算單元函數值:求一個集合的大小(個數)


2、計算合取函數值和相似性(合取函數:兩個集合的交集)

第一個MapReduce工作計算單元函數

其他MapReduce工作計算合取函數值和相似性


具體過程如下:


此爲第一個MapReduce過程。

在求出單元函數值後需要得出相似性。



發佈了23 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章