分享

MR一个简单的逻辑判断,困扰了好久,求大神解答,谢谢

任务描述:表a与表b的账号碰撞,表a全是账号,表b是信息

map:不重要,用伪代码  filename=context获取的表名
if(filename==表a){
context.write(账号,“success”);
}else{
context.write(账号,value);
}

educe:输出很奇怪,一直有success输出,代码是这样:
boolean flag1=false;
boolean flag2=false;
Text outval=null;
for(Text val:values){
      String vall=val.toString();
      if(vall.equals("success")){
           flag1=true
      }else{
           flag2=tue;
          outval=val;
}
}

if(flag1&&flaf2){
     context.write(Nullwriteable.get(),outval);
}

输出是输出了,可是输出很多success,不知道为什么,求解答,不可能outval赋值为success的啊,而且用logger测试了当outval.equals("success")的时候输出,没有日志打印,就不知道这个输出里面的success是怎么来的,就解答,谢谢大神们。

已有(4)人评论

跳转到指定楼层
sstutu 发表于 2018-7-3 18:14:42
这种贴一部分看不出来的。只知道你输出的是outval
像这种直接dubug下就可以找出问题来了。

回复

使用道具 举报

jixianqiuxue 发表于 2018-7-3 18:57:57
上面代码零星,需要一步步核实。
debug推荐参考:
hadoop的调试指导http://www.aboutyun.com/forum.php?mod=viewthread&tid=7605


回复

使用道具 举报

ZHUXUAN 发表于 2018-7-3 19:22:33
sstutu 发表于 2018-7-3 18:14
这种贴一部分看不出来的。只知道你输出的是outval
像这种直接dubug下就可以找出问题来了。

谢谢谢谢,
回复

使用道具 举报

ZHUXUAN 发表于 2018-7-3 19:29:20
jixianqiuxue 发表于 2018-7-3 18:57
上面代码零星,需要一步步核实。
debug推荐参考:
hadoop的调试指导http://www.aboutyun.com/forum.php?m ...

谢谢谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条