你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop skip mode 代码要点

[日期:2013-08-11] 来源:makenotes.net  作者:Linux [字体: ]

如果Hadoop数据集中有不合规格的数据,或者某些数据会引起程序崩溃,可以设置跳过模式,程序代码可以不处理这些异常,把异常抛出去让程序崩溃,hadoop框架会重新执行程序,并跳过会记录,参看http://hadoop.apache.org/common/docs/current/mapred_tutorial.html#Skipping+Bad+Records 。 但是这里没有给出代码例子,我尝试过几次都不能正常工作。经过一番排查,终于确定了可以正常工作的代码模式。

下面是可以工作的代码片断:

public class PwdSorter extends Configured implements Tool {

......

public int run(String[] args) throws Exception {

SkipBadRecords.setMapperMaxSkipRecords(getConf(), 5);

JobConf jobConf = new JobConf(getConf(), getClass());

......

}

public static void main(String[] args)throws Exception {

int res = ToolRunner.run(new PwdSorter(), args);

System.exit(res);

}

}

要点是 SkipBadRecords.setMapperMaxSkipRecords 要在 new JobConf 之前。如果这两个语句的顺序颠倒的话,skip mode不能正常工作。,缺省错误数据记录在 output/_logs/skip 目录,存储的格式是sequence file。

另外,如果用新的API,即 org.hadoop.mapreduce 包,这个包中没有 SkipBadRecords 类,用 mapred.SkipBadRecords 也能跳过怀记录。(修正:后来又试了一下,新的API Skip mode没成功,可能还是不能正常工作的,以前是记录错误的。)

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

linux
相关资讯       Hadoop代码 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款