• 解读:MR多路径输入


    对于在一个MR-Job中使用多路径作为输入文件,一般有三种方法:

    1).多次调用,加载不同路径:

    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
    
    //输入路径in01 in02
    String in01 = "hdfs://RS5-112:9000/cs01/path01";
    String in02 = "hdfs://RS5-112:9000/cs02/path02";
    
    //多次调用addInputPath()方法
    FileInputFormat.addInputPath(job,new Path(in0));
    FileInputFormat.addInputPath(job,new Path(in1));

    2).一次调用,同时加载多路径(字符串用逗号隔开):

    //这种方式的第二个参数只能是:将路径以逗号拼接的字符串
    FileInputFormat.addInputPaths(job,
        "hdfs://RS5-112:9000/cs01/path1,hdfs://RS5-112:9000/cs02/path2");

    3).使用MultipleInputs类的方法

    addInputPath(Job job, Path path,
          Class<? extends InputFormat> inputFormatClass);
    addInputPath(Job job, Path path,
      Class<? extends InputFormat> inputFormatClass,
      Class<? extends Mapper> mapperClass);

    MultipleInputs类的强大之处在于不仅可以多次调用addInputPath()方法加载路径,而且可以根据路径的不同指定不同的输入格式,更有甚者还可以根据输入格式的不同指定不同的Mapper函数进行处理。详见 MR案例:倒排索引 && MultipleInputs 和 MR案例:CombineFileInputFormat

    DEMO1:

    MultipleInputs.addInputPath(job, 
            new Path("hdfs://RS5-112:9000/cs01/path01"), 
            TextInputFormat.class);
    MultipleInputs.addInputPath(job, 
            new Path("hdfs://RS5-112:9000/cs02/path2"), 
            KeyValueInputFormat.class);

    DEMO2:

    MultipleInputs.addInputPath(job, 
            new Path("hdfs://RS5-112:9000/cs01/path01"), 
            TextInputFormat.class,
            Mapper01.class);
    MultipleInputs.addInputPath(job, 
            new Path("hdfs://RS5-112:9000/cs02/path2"), 
            KeyValueInputFormat.class,
            Mapper02.class);
  • 相关阅读:
    01
    商城管理系统
    10
    09
    08
    07(3)
    07(2)
    07
    06
    jsp第一次作业
  • 原文地址:https://www.cnblogs.com/skyl/p/4753703.html
Copyright © 2020-2023  润新知