Hadoop调试信息的输出办法

Hadoop

调试是比较麻烦的事情,考虑到只能通过 reduce 输出数据,我们可以把调试信息输出到 reduce 中,然后固定到某个文件中。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 

我们可以把所有的调试数据都是用key=Debug”,调试信息作为value=debugInfo”。

 

1)在map中直接使用

 

output.collect(new Text("debug"), new Text("调试信息"));

 

2)在reduce中判断

  1. if(key.equals("debug"))
  2. {
  3. while(values.hasNext())
  4. {
  5. Stringline=values.next().toString();
  6. output.collect(newText("debug"),newText(line));
  7. }
  8. }

(3)

增加类 ReportOutFormat
  1. publicstaticclassReportOutFormat<KextendsWritableComparable<?>,VextendsWritable>
  2. extendsMultipleOutputFormat<K,V>{
  3. privateTextOutputFormat<K,V>theTextOutputFormat=null;
  4. @Override
  5. protectedRecordWriter<K,V>getBaseRecordWriter(FileSystemfs,
  6. JobConfjob,Stringname,Progressablearg3)throwsIOException{
  7. if(theTextOutputFormat==null){
  8. theTextOutputFormat=newTextOutputFormat<K,V>();
  9. }
  10. returntheTextOutputFormat.getRecordWriter(fs,job,name,arg3);
  11. }
  12. @Override
  13. protectedStringgenerateFileNameForKeyValue(Kkey,Vvalue,Stringname){
  14. if(key.equals("debug"))///注意这个判断
  15. return"debug"+name;
  16. returnname;
  17. }
  18. }

4 )在 configJob 里面添加代码
  1. protectedvoidconfigJob(JobConfconf)
  2. {
  3. conf.setMapOutputKeyClass(Text.class);
  4. conf.setMapOutputValueClass(Text.class);
  5. conf.setOutputKeyClass(Text.class);
  6. conf.setOutputValueClass(Text.class);
  7. conf.setOutputFormat(ReportOutFormat.class);//增加该行
  8. }

这样在输出文件中我们就可以得到调试信息了。这个办法有点曲线救国的意思,不知道有没有其他方便的办法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值