这是中国大学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