MapReduce 之 Splits

参考链接

https://blog.csdn.net/zhou4411781/article/details/119133431

配置

src/main/java/org/apache/hadoop/mapreduce/lib/input/FileInputFormat.java

cpp 复制代码
  public static final String SPLIT_MAXSIZE = 
    "mapreduce.input.fileinputformat.split.maxsize";
  public static final String SPLIT_MINSIZE = 
    "mapreduce.input.fileinputformat.split.minsize";
cpp 复制代码
<property>
  <name>mapreduce.input.fileinputformat.split.minsize</name>
  <value>0</value>
  <description>The minimum size chunk that map input should be split
  into.  Note that some file formats may have minimum split sizes that
  take priority over this setting.</description>
</property>

src/main/java/org/apache/hadoop/mapred/FileInputFormat.java

cpp 复制代码
      if (length != 0) {
        FileSystem fs = path.getFileSystem(job);
        BlockLocation[] blkLocations;
        if (file instanceof LocatedFileStatus) {
          blkLocations = ((LocatedFileStatus) file).getBlockLocations();
        } else {
          blkLocations = fs.getFileBlockLocations(file, 0, length);
        }
        if (isSplitable(fs, path)) {
          long blockSize = file.getBlockSize();
          long splitSize = computeSplitSize(goalSize, minSize, blockSize);

          long bytesRemaining = length;
          while (((double) bytesRemaining)/splitSize > SPLIT_SLOP) {
            String[][] splitHosts = getSplitHostsAndCachedHosts(blkLocations,
                length-bytesRemaining, splitSize, clusterMap);
            splits.add(makeSplit(path, length-bytesRemaining, splitSize,
                splitHosts[0], splitHosts[1]));
            bytesRemaining -= splitSize;
          }

示例

cpp 复制代码
2026-01-08 15:26:46,125 INFO mapred.FileInputFormat: Total input files to process : 256
2026-01-08 15:26:46,157 INFO mapreduce.JobSubmitter: number of splits:256
cpp 复制代码
  private void runIOTest(
          Class<? extends Mapper<Text, LongWritable, Text, Text>> mapperClass, 
          Path outputDir) throws IOException {
    JobConf job = new JobConf(config, TestDFSIO.class);

    FileInputFormat.setInputPaths(job, getControlDir(config));
    job.setInputFormat(SequenceFileInputFormat.class);
相关推荐
火星数据-Tina16 小时前
如何构建一个支持多终端同步的体育比分网站?
大数据·前端·数据库·websocket
kekekka16 小时前
实测验证|2026市场部有限预算破局:以178软文网为核心,搭建全域覆盖增长系统
大数据·人工智能
电商API_1800790524716 小时前
B站视频列表与详情数据API调用完全指南
大数据·人工智能·爬虫·数据分析
行业探路者17 小时前
二维码制作工具使用指南:如何利用电脑摄像头轻松扫描和生成图片二维码
大数据·人工智能·学习·产品运营·软件工程
行业探路者17 小时前
如何利用二维码提升产品画册的制作与传播?
大数据·人工智能·安全·二维码·设备巡检
安达发公司17 小时前
安达发|给“工业心脏”装上新大脑:APS生产排产的硬核智慧
大数据·人工智能·aps高级排程·aps排程软件·生产计划排单软件·aps生产排产
悦数图数据库17 小时前
“复旦大学—杭州悦数先进金融图技术校企联合研究中心年度总结会”圆满举行
大数据·数据库·人工智能
yunni817 小时前
知识库 × AI写作:打通公文写作的“最后一公里”
大数据·人工智能
TDengine (老段)17 小时前
TDengine Rust 连接器入门指南
大数据·数据库·物联网·rust·时序数据库·tdengine·涛思数据