用Java编写简单的Map Reduce程序时,下面的行可以正常工作。
job.setOutputFormatClass(TextOutputFormat.class)
但是Scala中的同一件事是期望参数。
job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]])
为什么表现不同?
我有什么想念的吗?
最佳答案
在Java中,TextOutputFormat.class
是特殊语法。在Scala中,就语法而言,classOf[...]
只是一个通用方法调用(当然,编译器会对其进行特殊处理)。因此,type参数必须是类型,而TextOutputFormat
本身不是类型(在Java中,它称为原始类型,但这不是您通常应使用的东西; Scala不支持原始类型)。编写classOf[TextOutputFormat[_, _]]
。