1.选择运算
Map函数:对R中的每个元组t,检查它是否满足条件C。如果满足就产生键值对
(t,t).
Reduce函数:Reduce函数作用类似于恒等式,仅仅将每个键值对传递到输出部分。
2.投影运算
Map函数:对R中的每个元组t,通过剔除t中属性不在S中的字段得到元组t‘,输出键值对(t',t').
Reduce函数:对任意Map任务产生的每个键t’,将存在一个或多个键值对(t',t'),Reduce函数将(t',[t',..,t'])转换成(t',t'),以保证对
该键t'只产生一个(t',t')对。
3.并、交、差运算
(1)并
Map函数:将每个输入元组t转换为键值对(t,t)
Reduce函数:和每个键t关联的可能有一个或两个值,两种情况下都输出(t,t)
(2)交
Map函数:将每个输入元组t转换为键值对(t,t)
Reduce函数:如果键t的值表为[t,t],则输出(t,t),否则输出(t,NULL)
(3) 差 关系R-S的差
Map函数:对于R中的元组他,产生键值对(t,R),对于S中的元组t,产生键值对(t,S)。需要注意的R,S是名称不是整个关系本身。
Reduce函数:对每个键进行如下处理:
a)如果关联的值表是[R],输出(t,t);
b)如果相关联的值表是其他情况,包括[R,S],[S,S]或[S],(t,NULL).
4.自然链接运算 将R(A,B)和S(B,c)进行自然链接运算
Map函数:对R中的每个元组(a,b)生成键值对(b,(R,a)),对S中的每个元组(b,c)生成键值对(b,(S,c))
Reduce函数:每个键值b会与一系列对相关联,这些对要么来自(R,a),要么来自(S,c),基于(R,a)和(S,c)构建的所有对。键b对应的
输出结果是(b,[(a1,b,c1),(a2,b,c2),...]),也就是说与b相关联的元组列表由来自R和S的中的具有共同b值的元组组
合而成。
5.分组聚合运算 对R(A,B,C)施加运算Gamma_{A,theta(B)}(R)
Map函数:对每个元组(a,b,c),生成键值对(a,b)
Reduce函数:每个键a代表一个分组,即对于键a关联的字段B的值表[b1,b2,...bn]施加theta操作,输出结果是(a,x)对,

1,2,5都是针对一个关系R的,3,4是针对两个关系R和S的。
[em25]复杂运算都在基础运算上进行。