报错原文:The method call(String) of type new VoidFunction<String>(){} must override a superclass method
源代码:JavaRDD<String> cars = myRDD.flatMap(new FlatMapFunction<Tuple2<ImmutableBytesWritable, Result>, String>(){
private static final long serialVersionUID = 1L;
@Override
public Iterable<String> call(Tuple2<ImmutableBytesWritable, Result> t)
throws Exception {
String CofCol = Bytes.toString(t._2.getValue(Bytes.toBytes("content"), Bytes.toBytes("count")));
return Arrays.asList("Cofcol : "+CofCol);
// return Arrays.asList(cid);
}
});
解决方案:Eclipse的提示是去掉@override,去掉虽然编译没错,但是public Iterable<String> call(Tuple2<ImmutableBytesWritable, Result> t)是不起效的,在spark里运行时会报错,报错原文:ERROR Executor: Exception in task 0.0 in stage 15.0 (TID 206)
java.lang.AbstractMethodError: SimpleApp$1.call(Ljava/lang/Object;)Ljava/util/Iterator;
事实上,是java库版本错误,建项目时我使用了默认的J2SE1.5,改成1.7就对了(据说1.6以上都行)。