单表关联

来源:互联网 发布:自制手机网络接收器 编辑:程序博客网 时间:2024/05/29 07:40
输入:
child parent
tom jack
tom lucy
jone jack
jone lucy
jack ben
jack alice
lucy fred
lucy jin
输出:
grandchild grandparent
tom ben
tom alice
tom fred
tom jin
jone ben
jone alice
jone fred
jone jin
分析:
1 这是一张表,我们可以用sql查出,如:select a1.child, a2.parent from A a1, A a2 where a1.parent = a2.child
2 在mapreduce中我们要形成左表和右表,考虑到mapreduce处理过程中有shuffle过程,即会把key相同键值对进行分组 
3 在map形成左表和右表,如:
jack 1 + tom + jack(parent 1+child+parent)
tom 2 + tom + jack(child 2+child+parent)
lucy 1 + tom + lucy
tom 2 + tom + lucy
jack 1 + jone + jack
jone 2 + jone + jack
lucy 1 + jone + lucy
jone 2 + jone + lucy
ben 1 + jack + ben
jack 2 + jack + ben
alice 1 + jack + alices
jack 2 + jack + alice
fred 1 + lucy + fred
lucy 2 + lucy + fred
jin 1 + lucy + jin
lucy 2 + lucy + jin
其中1代表左表,2 代表右表
4 到reduce端会进行分组,如:jack{1 + tom + jack,1 + jone + jack,2 + jack + ben,2 + jack + alice}
  这样jack作为父亲和儿子的所有数据都拿到了,然后在进行处理(笛卡尔积),即可得到结果
0 0
原创粉丝点击