MapReduce算法例析——连接算法

这是中国大学MOOC大数据算法的课程笔记

这一讲是MapReduce一些相对复杂的应用


本讲分为两个部分:

连接(Join)算法

图算法


图算法在后一篇文章中讲述。


连接算法


笛卡尔积定义如下

MapReduce算法例析——连接算法_第1张图片

在笛卡尔积上添加约束条件后的运算就是连接操作。如Theta连接和自然连接。连接在数据库中是比较昂贵的操作。



下面是Hash Join用MapReduce的实现:

MapReduce算法例析——连接算法_第2张图片


对于两个表分别进行上述MapReduce过程操作:

将原表分块,mapper按Hash值将其划分为不同的Hash桶,然后reducer根据不同的Hash值将桶聚合。

这样两个表的第一个reducer生成的结果对应相同的Hash桶,再把它们放到同一个merger中进行hash join。


使用MapReduce处理多个连接的操作,h取1到m的范围数,Reducer取连接操作数的平方。


另一个例子是Hive中的repartition join

MapReduce算法例析——连接算法_第3张图片

做连接的键是key,剩下的作为value,在经过map以后,把这些pairs根据key进行分组,把具有相同key的元组分到同一个组当中(两个表有相同key的元组)。在Reduce阶段,根据表名做划分后就可以做笛卡尔积。



多路连接的处理:将连接属性相同的项放入同一个Reducer中。


相似连接对应相似查询,如搜索输入

这比一般的自然连接要慢。



用MR进行多重集相似连接的算法


Jaccard相似性:交集比并集


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


Dice相似性等


两种MR的工作

1、计算单元函数值:求一个集合的大小(个数)


2、计算合取函数值和相似性(合取函数:两个集合的交集)

第一个MapReduce工作计算单元函数

其他MapReduce工作计算合取函数值和相似性


具体过程如下:

MapReduce算法例析——连接算法_第4张图片

此为第一个MapReduce过程。

在求出单元函数值后需要得出相似性。

MapReduce算法例析——连接算法_第5张图片


你可能感兴趣的:(大数据算法)