首页 > 其他 > 详细

hadoop2.6.0中自定义分割模式

时间:2016-03-29 21:04:51      阅读:278      评论:0      收藏:0      [点我收藏+]

最近在学习hadoop,用的hadoop2.6.0

然后在学习编写mapreduce程序时,发现默认对文件的输入是采用每行进行分割,下面来分析下改变这个分割方式的办法:

来看看默认是怎样实现的:

技术分享

如果不使用Job的setInputFormatClass()设置,默认的InputFormat类是使用TextInputFormat类

TextInputFormat类是继承自FileInputFormat

FileInputFormat 实现了 InputFormat接口

技术分享

 

TextInputFormat中可以看到,在getRecordReader函数中调用了LineRecordReader这个类。我们注意观察在传入的参数中有一个delimiter参数,这个参数就是用来指定分割符的(具体可以查看LineRecordReader中实现对文件分割的实现),所以我们可以自己定义一个类MyInputFormat继承FileInputFormat类然后将

String delimiter = context.getConfiguration().get(
        "textinputformat.record.delimiter");

改为:String delimiter = "END";

“END”即指定的分隔符。

技术分享

然后在程序中,在Job中设置InputFormat类为MyInputFormat.class即可。

 

hadoop2.6.0中自定义分割模式

原文:http://www.cnblogs.com/renhq/p/5334690.html

(1)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!