reduce的输出为《LongWriteble,FloatWritable》时会使其得不到执行,可以通过设置job.setCombinerClass(ClassPriorReducer.class);
来使其得以执行。
Hadoop中的数据类型转化为java类型时对于Text调用toString()方法,对于其他类型则调用get()方法,
java类型转化为Hadoop类型调用hadoop类型的构造方法或调用set()方法
jod.setCombinerClass(Reducer.Class)时要注意Combiner可以理解为小的Reducer,为了降低网络传输负载和后续Reducer的计算压力,但其输出还是要被Reducer处理,也就是说当选择自定义的Reducer作为Combine时,要注意Combine的输出为Reducer的输入,所以此时Reducer中的输入的《Key,Vlaue》与输出的《Key,Value》类型要保持一致,否则会报错的!!! 可以理解Combine是对一个Map进行相同的key合并,而reduce是对多个Combine的输出进行合并。
还有要注意的地方就是,用mapreduce处理csv文件时,要把代表列名的第一行删掉才能正确执行,切记!!
遇到map执行而reduce不执行时,可能是数据格式出了问题,换成csv的切把第一行的列名去掉得以解决