2

現在、すべての出力がテキスト ファイルにある mapreduce プログラムがあります。プログラムのサンプルを以下に示します。どうすればよいかわかりませんが、リデューサーからキーと値のペアをシーケンスファイル形式で出力することです。 いいえ、hadoop 0.20 ライブラリを使用しているため、SequeceFileFormat 指定子を使用できません

それで、私は何をしますか?以下はサンプルです wordcount プログラムは、私の大きなプログラムのほんの一部です。1つでそれを行う方法を知っていれば、残りでそれを行うことができます. 助けてください。 ワードカウントリデューサー

public void reduce(Text key, Iterable<IntWritable> values, Context context) 
  throws IOException, InterruptedException 
  {
    int sum = 0;
    for (IntWritable val : values) {
        sum += val.get();
    }
    System.out.println("reducer.output: "+key.toString()+" "+sum);

    context.write(key, new IntWritable(sum)); **//RIGHT HERE!! OUTPUTS TO TEXT**

}

}

これを実行するメイン プログラムは次のとおりです (マッパーやその他の関係のない詳細は省きました)。

Configuration conf = new Configuration();

Job job = new Job(conf, "Terms");
job.setJarByClass(wordCount.class);

//Outputting key value pairs as a dictionary (rememb python)
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

//Setting the mapper and reducer classes
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);


//Setting the type of input format. In this case, plain TEXT
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

テキスト ファイルをシーケンス ファイルに変換する方法を知っています。私は反対のことをする方法を知っています。それはここでは問題ではありません。Hadoop プログラムで実際にこれを行う例が見つからなかったため、行き詰まっています。

したがって、私が望む出力は、このプログラムがキーと値のペアをテキスト ファイルではなくシーケンス ファイルに書き込むことです。

マッパーでシーケンスファイルを読み込む方法も知りたいです

どんな助けでも大歓迎です。

4

1 に答える 1