2017-10-07 33 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中運行時仍然存在一些錯誤,但是這個問題不是針對該程序的。 再次感謝。 :) –

相關問題