Hadoop类型转换

时间:2017-12-04 05:56:48

标签: java hadoop types

我的mapper和reducer类有以下签名:

MapperPrime extends Mapper<Text, Text, Text, Text>
ReducerPrime extends Reducer<Text, Text, Text, LongWritable>

当我运行代码时,执行到达reducer时会出现以下异常:

java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
    at ReducerPrime.reduce(ReducerPrime.java:1)

当我将ReducerPrime中的第一个泛型类型从Text更改为LongWritable时,即

ReducerPrime extends Reducer<LongWritable, Text, Text, LongWritable>

不再抛出异常。是什么赋予了?为什么/ java会在哪里看到LongWritable?

减速器中的输入键,值类型是否与Mapper中的输出键,值类型完全匹配?

1 个答案:

答案 0 :(得分:1)

  

为什么/ java会在哪里看到LongWritable

对于Mapper,TextInputFormat的关键是文件偏移,这是一个很长的。值是文本行,因此是Text可写对象。

  

减速器中的输入键,值类型是否与Mapper中的输出键,值类型完全匹配?

是的,它应该,但是因为我们现在看不到代码,很难说你写的是输出。