在使用scala编写MR时报“class SequenceFileOutputFormat takes type parameters”的错误。
问题的原因
在java中,代码是这样写的:
job.setOutputFormatClass(SequenceFileOutputFormat.class);
如果仿照上面的代码写出scala的代码:
job.setOutputFormatClass(classOf[SequenceFileOutputFormat])
就会引发:“class SequenceFileOutputFormat takes type parameters”
查看SequenceFileOutputFormat的源码有如下定义:
public class SequenceFileOutputFormat <K,V> extends FileOutputFormat<K, V>
所以在scala中必须还要指定泛型信息。
问题解决
因为不知道运行时的具体类型,所以不能明确写出具体类型,为了方便,采用下面的方式指定泛型
job.setOutputFormatClass(classOf[SequenceFileOutputFormat[_,_]])