Spark中用Scala和java開發有什么區別?
很高興回答你的問題:
由于Spark是由Scala開發的所以大家在開發Spark應用程序的時候多數會選擇Scala語言,不過Spark官方網站中也給出了用java實現的實例。
1、構建系統的選擇,sbt更合適用來構建Scala工程,maven更合適用來構建Java工程。
2、對于spark中的API來說,Java和Scala有差別,但差別并不大。
3、如果用Scala開發spark原型程序,可以用spark-shell“打草稿”,或者直接使用spark-shell做交互式實時查詢。
4、用Scala代碼量將減少甚至一個數量級,不過Scala的使用門檻較高
5、Scala 開發效率更高,代碼更精簡。
6、使用Spark過程中出現異常情況,在排查時如果對Spark源碼比較熟悉,可以事半功倍。
7、另外Spark基本使用函數式編程,使用Java的話可能需要寫一大堆匿名類,而Scala只需要一個lambda表達式。
8、Java不支持自動類型推導,RDD類基本都是范型,聲明時需要寫一串類類型,而Scala基本可以省略變量類型。
綜上所述:
就個人體會來說,Scala相對于Java的優勢是巨大的。熟悉Scala之后再看Java代碼,有種讀匯編的感覺……
另外,如果喜歡,可以混合Java和Scala,因為二者最終都是編譯成class文件,使用Scala能夠隨意調用Java實現的類和方法。
從表面上看,無論采用哪種語言,都能完成一樣的功能,只是代碼量有多有少,開發人員根據自己的情況選擇使用Java還是Scala都可。
據說目前最新的Java 8已經支持函數式接口了,Java 9也將推出Java Shell功能,慢慢地會變得和Scala一樣簡潔。