在Java中编写一个简单的Map Reduce程序时,下面的行工作正常。
job.setOutputFormatClass(TextOutputFormat.class)
但Scala中的相同内容是期待参数。
job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]])
为什么表现不一样? 有什么我想念的吗?
答案 0 :(得分:2)
在Java中,TextOutputFormat.class
是特殊语法。在Scala中,就语法而言,classOf[...]
只是一个泛型方法调用(当然,它由编译器专门处理)。所以type参数需要是一个类型,而TextOutputFormat
本身不是一个类型(在Java中它被称为原始类型,但它不是你通常应该使用的东西; Scala没有&#39} ; t支持原始类型)。写classOf[TextOutputFormat[_, _]]
。