Hadoop之利用mapreduce输出祖孙关系

一、总体解析:

1.需求
实例中给出child-parent(孩子——父母)表,要求输出grandchild-grandparent(孙子——爷奶)表。
数据如下:
A1,A2
B1,A2
B2,A31
A2,A31
A2,A32
A31,A41
2.实现思路
核心实现思路:
(1)在Map阶段,分别将父子关系与相反的子父关系在各个value前补上前缀"-“与”+"标识此key-value中的value是正序还是逆序产生的,之后进入context。这样做的目的是让之后的Reduce阶段有同样的key值,并根据标识符判断祖孙关系。
即得到数据:
A1,A2 —> (A1 A2)(A2,A1)
A2,A31 ---->(A2,A31)(A31,A2)
(2)MapReduce会自动将同一个key的不同的value值,组合在一起,推到Reduce阶段。在value数组中,根据前缀,我们可以得知,哪个是祖辈,哪个是孙辈。
即得到的数据:
(A2,A1)(A2,A31) ---->(A2:A1,A31)
将相同的key值连接起来,这样得到的两个value就是祖孙关系。

二、祖孙关系

1.实现代码如下

import java.io.IOException;
import java.util.ArrayList;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class SingleTableJoin {
   
	public static class 
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值