2016-08-05 5 views
0

Возможно ли каким-либо образом обеспечить расположение нескольких входных папок в классе драйвера?Расположение нескольких входных папок в Mapper

У меня есть 4 папки ввода в этом случае, так как мы можем указать все эти 4 папки в моем классе драйвера, чтобы мой картограф мог читать данные из всех файлов в этих 4 разных папках.

Большое спасибо ...

+0

Невозможно (скажем, улей) присоединиться к данным и получить одну папку. если нет, то почему они должны оставаться отдельно друг от друга. – abhiieor

ответ

0

Вы можете использовать MultipleInputs класс, чтобы добавить свои входные файлы.

MultipleInputs.addInputPath(job, inputPath, TextInputFormat.class, MyMapper.class); 

Вы можете заменить выше inputPath вашего местоположения файла, TextInputFormat.class в качестве формата файла ввода и MyMapper.class в классе картографа.

Таким образом, вы можете добавить столько файлов, сколько вам нужно.

0

В случае, если данные в этих 4-х местах отличаются друг от друга, вам, возможно, придется рассмотреть возможность создания 4-х разных классов карт, чтобы их прочитать. Ваш код будет выглядеть примерно так, как показано ниже. Укажите ваши местоположения в качестве аргументов в последовательности при выполнении банку.

public class MultiplePaths { 

public static void main(String[] args) throws Exception { 

    JobConf conf = new JobConf(MultiplePaths.class); 
    conf.setJobName("MultipleMappersPaths"); 

    conf.setMapOutputKeyClass(Text.class); 
    conf.setMapOutputValueClass(Text.class); 

    conf.setOutputKeyClass(Text.class); 
    conf.setOutputValueClass(Text.class); 

    MultipleInputs.addInputPath(conf,new Path(args[0]),TextInputFormat.class,LocationMapper1.class); 
    MultipleInputs.addInputPath(conf,new Path(args[1]),TextInputFormat.class,LocationMapper2.class); 
    MultipleInputs.addInputPath(conf,new Path(args[2]),TextInputFormat.class,LocationMapper3.class); 
    MultipleInputs.addInputPath(conf,new Path(args[3]),TextInputFormat.class,LocationMapper4.class); 

    FileOutputFormat.setOutputPath(conf, new Path(args[2])); 
    JobClient.runJob(conf); 

    } 

} 

В противном случае, если вы должны читать подобные файлы из 4-й различных мест, код должен выглядеть примерно ниже example.Pass вашего местоположения в качестве аргументов в последовательности при выполнении баночки.

MultipleInputs.addInputPath(conf,new Path(args[0]),TextInputFormat.class,LocationMapper.class); 
    MultipleInputs.addInputPath(conf,new Path(args[1]),TextInputFormat.class,LocationMapper.class); 
    MultipleInputs.addInputPath(conf,new Path(args[2]),TextInputFormat.class,LocationMapper.class); 
    MultipleInputs.addInputPath(conf,new Path(args[3]),TextInputFormat.class,LocationMapper.class); 
+0

спасибо большое, он работал правильно .... :-) – Sujoy

Смежные вопросы