• hadoop拾遗(一)---- 避免切分map文件


      有些程序可能不希望文件被切分,而是用一个mapper完整处理每一个输入文件。例如,检查一个文件中所有记录是否有序,一个简单的方法是顺序扫描第一条记录并并比较后一条记录是否比前一条要小。如果将它实现为一个map任务,那么只有一个map操作整个文件时,这个算法才可行。

      有二种办法可以保证输入文件不被切分。第一种(最简单但不怎么漂亮的)方法就是增加最小分片大小,将它设置成大于要处理的最大文件大小。把它设置为最大值long.MAX_VALUE即可。每二种方法就是使用FileInputFormat具体子类,并且重载isSplitable()方法把返回值设置为false。例如,以下就是一个不可分割的TextInputFormat: 

    import org.apache.hadoop.fs.*;
    import org.apache.hadoop.mapred.TextInputFormat;
    import org.apache.hadoop.mapreduce.JobContext;
    
    
    public class DontSplitMap {
    	
    	//老的版本
    	public class NonSplittableTextInputFormat4Old extends TextInputFormat{
    		@Override
    		protected boolean isSplitable(FileSystem fs , Path file)
    		{
    			return false;
    		}
    	}
    	//较新的版本
    	public class NonSplittableTextInputFormat4New extends org.apache.hadoop.mapreduce.lib.input.TextInputFormat{
    		@Override
    		protected boolean isSplitable(JobContext context, Path file)
    		{
    			return false;
    		}
    	}
    }
  • 相关阅读:
    c调用python记录
    linux 进程内存基础
    doubango类面向对象研究
    HBuilderX 连接 逍遥模拟器 之 解决没法找到模拟器设备 问题
    Application,Session,Cookie,ViewState和Cache区别
    每个.Net开发人员应该下载的十种必备工具
    ASP.NET面试资料
    .net 主题与样式
    浅谈C#当中的out关键字
    5ResponseModel响应模型
  • 原文地址:https://www.cnblogs.com/nocml/p/3292903.html
Copyright © 2020-2023  润新知