我有一個作業中的Java Map Reduce程式,有兩個作業。第一個還原器的輸出被寫入一個檔案中,并由第二個映射器讀取。
我想將第一個還原器的輸出改為 SequenceFile,
。我如何才能做到這一點?
這是一個主要的問題。
這是我的程式的主要內容
public static void main(String[] args) throws Exception {
//setup first job
Configuration conf = new Configuration()。
conf.set("mapred.textoutputformat.separator", "&") 。
Job job = Job.getInstance(conf, "First Job") 。
job.setJarByClass(Prova.class)。
job.setMapperClass(FirstMapper.class);
job.setReducerClass(FirstReducer.class)。
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class)。
FileInputFormat.addInputPath(job, new Path(args[0] )。
Path tempOutput=new Path("FirstMapper"/span>)。
FileOutputFormat.setOutputPath(job, tempOutput)。
job.waitForCompletion(true)。
//設定第二個作業。
Configuration conf2 = new Configuration() 。
conf2.set("mapred.textoutputformat.separator", ")。
conf2.set("numberOfELements", args[2])。)
Job job2 = Job.getInstance(conf2, "Second Job") 。
job2.setJarByClass(Prova.class)。
job2.setMapperClass(SecondMapper.class)。
job2.setReducerClass(SecondReducer.class)。
job2.setOutputKeyClass(Text.class);
job2.setOutputValueClass(Text.class)。
FileInputFormat.addInputPath(job2, tempOutput)。
FileOutputFormat.setOutputPath(job2, new Path(args[1] )。
System.exit(job2.waitForCompletion(true) ? 0 : 1)。)
}
我已經嘗試添加了以下幾行:
我已經嘗試添加了以下幾行。
job.setOutputFormatClass(SequenceFileOutputFormat.class)。
job2.setInputFormatClass(SequenceFileInputFormat.class)。
但我得到以下錯誤。wrong value class: org.apache.hadoop.io.Text is not class org.apache.hadoop.io.IntWritable。當我在第一個還原器中進行contect.write(Text,Text)時,錯誤發生了。
uj5u.com熱心網友回復:
context.write(Text, Text)和job.setOutputValueClass(IntWritable.class);彼此不一致。讓它們保持一致,它就應該作業了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/318983.html
標籤:
上一篇:CloudTask函式未觸發-任何需要AppEngine的資源只能在AppEngine區域中創建/更新
下一篇:為什么npm給我這個輸出?
