您的位置:首页 > 运维架构

关系代数 in Hadoop

2018-01-03 23:02 176 查看
1、选择,即where子句。

Map阶段过滤条件,输出键值对(record,null),即直接将符合条件的值写在键值上,Reduce阶段不做任何事,最后直接将Map的结果输出。

2、投影,即选择某几列的值

Map阶段以每条记录在几个属性上的值为键,键值为空,即((a1,a2,a3),null),Reduce阶段仅仅将Map的结果输出。

3、交运算 (R^T)

Map:

对于两张表R和T的每一条记录都以(r,1)的键值对输出。

Reduce:

汇总Map输出的结果,若有(r,2),则该条记录必为一个交集。

这里要保证相同记录发送到同一个Reduce节点,所以重写hashcode使相同对象的hashcode一定相同。

4、差运算 (R-T)

Map:

对于R和T两张表,每一条记录仪键值对(r,R)或(r,T)输出,即键值为记录,值为表名。

Reduce:

检查每一条记录r,若只有R没有T,则将该记录输出。

保证相同记录发送到同一个Reduce节点。

5、自然连接

Map:

对于R和T两张表,以id为键,其余属性值为值,例如,对R表,输出(1,(R,李志,20,91)),对T表,输出(1,(T,女,165))。

Reduce:

将同一键中所有的值根据它们的来源(R和T),分为两组,做笛卡尔积,然后将结果输出,例如,(1,张小雅,20,91,女,165)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop