我用了两个制图器和两个减缩器。我得到以下错误:
java.lang.classcastexception:org.apache.hadoop.io.longwritable不能转换为org.apache.hadoop.io.text
这是因为第一个减速机 <Text, IntWritable>
我的第二个Map绘制者 <Text,IntWritable>
但是,正如我读到的,Map绘制者 <LongWritable, Text>
默认情况下。
所以,我必须设置输入格式如下:
job2.setInputFormatClass(MyInputFormat.class);
有没有办法将inputformat类设置为接收 <Text,IntWritable>
?
2条答案
按热度按时间3zwtqj6y1#
Map器的输入类型由您怀疑的inputformat设置。
一般来说,当你像这样把工作链接在一起时,最好使用
SequenceFileOutputFormat
在下一份工作中SequenceFileInputFormat
. 通过这种方式,可以为您处理类型,并将类型设置为相同的,即Map器输入与以前的reducer输出相同。a6b3iqyw2#
您不需要自己的输入格式。您只需为第一个作业设置sequencefileoutputformat,为第二个作业设置sequencefileinputformat。
textinputformat使用长可写键和文本值,但是sequencefileinputformat使用任何用于存储输出的类型。