0
我使用一個M/R作業的輸出作爲另一個作業的輸入時遇到問題。根據這個post和許多其他在線資源,一種方法是創建一個job1,然後創建一個job2。然而,當我這樣做,我收到此錯誤:使用hadoop作業的輸出作爲另一個的輸入
Error: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.io.LongWritable
我用LongWritable作爲一類唯一的一次,是爲重點,以我的映射。我記得這需要保持這樣,因爲這是輸入文件中的偏移量。當我更改簽名,是Text
,就像這樣:
public class ErrorMapperCombiner extends Mapper<Text, Text, Text, IntWritable>
我得到這個錯誤:
Error: java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.Text
所以,我怎麼可以用一個M/R作業的輸出作爲輸入到另一個?
我在我的「亞軍」類鏈也使用此:
job1.setOutputFormatClass(SequenceFileOutputFormat.class);
job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(IntWritable.class);
.....
job2.setInputFormatClass(SequenceFileInputFormat.class);