用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[_, _]]

09-25 22:14