2017-10-07 61 views
-1

在Java中编写简单的Map Reduce程序时,下面的代码行可以正常工作。classOf [TextOutputFormat]需要Scala中的参数,但在没有任何参数的情况下可以正常工作(TextOutputFormat.class)

job.setOutputFormatClass(TextOutputFormat.class)  

但在Scala中同样的事物正在等待参数。

job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]]) 

它为什么表现不同? 有什么我失踪?

+0

请先询问 – cchantep

回答

2

在Java中,TextOutputFormat.class是特殊的语法。就语法而言,在Scala中,classOf[...]只是一种通用的方法调用(当然,它是由编译器专门处理的)。所以类型参数需要是一个类型,并且它本身不是一种类型(在Java中称为原始类型,但它不是您通常使用的; Scala不支持原始类型)。写classOf[TextOutputFormat[_, _]]

+0

感谢您的解释。使一些事情清楚。 Scala程序在Hadoop中运行时仍然存在一些错误,但是这个问题不是针对该程序的。 再次感谢。 :) –

相关问题