私はマッパとレデューサを設定せず、他のパラメータを自分のプログラムからジョブ設定に設定していないhadoop map-reduceプログラムで作業しています。私は、Jobが出力と同じ出力を出力ファイルに送ることを想定していました。 しかし、私はそれがタブ(私は推測)で区切られたすべての行と出力ファイルにいくつかのダミーの整数値を印刷していることがわかった。ここでMap-reduce出力ファイルで未知の整数値を取得する
は私のコードです:
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class MinimalMapReduce extends Configured implements Tool {
public int run(String[] args) throws Exception {
Job job = new Job(getConf());
job.setJarByClass(getClass());
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true) ? 0 : 1;
}
public static void main(String[] args) {
String argg[] = {"/Users/***/Documents/hadoop/input/input.txt",
"/Users/***/Documents/hadoop/output_MinimalMapReduce"};
try{
int exitCode = ToolRunner.run(new MinimalMapReduce(), argg);
System.exit(exitCode);
}catch(Exception e){
e.printStackTrace();
}
}
}
そして、ここでは、入力された:
0 2011 22
8 2011 25
16 2012 40
24 2013 35
32 2013 38
40 2014 44
48 2015 43
どのように私は同じ出力に含まを得ることができます。
2011 22
2011 25
2012 40
2013 35
2013 38
2014 44
2015 43
そして、ここでは、出力されます入力?
これは、マッパーを指定しなくても、常に「IdentityMapper」が実行されるためです。各行の前にある_unknown integer_は、ファイルの先頭からのそれぞれの行のオフセットです。 – philantrovert
@philantrovert私はこれを正しい答えとして掲示します。 –
@BinaryNerdそれでは、あなたはそれをupvoteことを確認してください。私はあなたの目を保つだろう;) – philantrovert