2016-08-05 5 views
0

Driverクラスで複数の入力フォルダの場所を指定する方法はありますか?Mapperで複数の入力フォルダの場所

私は4つの異なるフォルダ内のすべてのファイルからマッパーがデータを読み込むことができるように、私は4つの入力フォルダの場所を持っています。

ありがとうございます...

+0

データを結合して1つのフォルダを取得することはできません(ハイブなど)。どうして彼らはお互いに離れている必要がありますか? – abhiieor

答えて

0

入力ファイルを追加するには、MultipleInputsクラスを使用できます。

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

あなたの入力ファイル形式とあなたのマッパークラスにMyMapper.classとして、あなたのファイルの場所、TextInputFormat.classに上記inputPathを置き換えることができます。

この方法で、必要な数のファイルを追加できます。

0

これらの4つの場所のデータが異なる場合、4つの異なるマッパークラスを作成して読み込むことを検討する必要があります。コードは以下の例のようになります。瓶あなたは4つの異なる場所から同様のファイルを読むために持っている場合はjarファイルを実行しながら

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); 

    } 

} 

そうでない場合は、あなたのコードは、順番に引数として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

関連する問題