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