码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop2.6.0中自定义分割模式

时间:2016-03-29 21:05:52      阅读:158      评论: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!