- Spark編程基礎
- 林子雨 賴永炫 陶繼平
- 1140字
- 2020-09-18 18:33:46
1.3 編程語言的選擇
大數據處理框架Hadoop、Spark、Flink等,都支持多種類型的編程語言。比如,Hadoop可以支持C、C++、Java、Python等,Spark可以支持Java、Scala、Python和R等。因此,在使用Spark等大數據處理框架進行應用程序開發之前,需要選擇一門合適的編程語言。
R是專門為統計和數據分析開發的語言,具有數據建模、統計分析和可視化等功能,簡單易上手。Python是目前國內外很多大學里流行的入門語言,學習門檻低,簡單易用,開發人員可以使用Python來構建桌面應用程序和Web應用程序,此外,Python在學術界備受歡迎,常被用于科學計算、數據分析和生物信息學等領域。R和Python都是比較流行的數據分析語言,相對而言,數學和統計領域的工作人員更多使用R語言,而計算機領域的工作人員更多使用Python。
Java是目前最熱門的編程語言,雖然Java沒有R、Python一樣好的可視化功能,也不是統計建模的最佳工具,但是,如果需要建立一個龐大的應用系統,那么Java通常會是較為理想的選擇。由于Java具有簡單、面向對象、分布式、安全、體系結構中立、可移植、高性能、多線程以及動態性等諸多優良特性,因此,被大量應用于企業的大型系統開發中,企業對于Java人才的需求一直比較旺盛。
Scala是一門類似Java的多范式語言,它整合了面向對象編程和函數式編程的最佳特性。本教程采用Scala語言編寫Spark應用程序,主要基于以下幾個方面的考慮因素:
? Scala具備強大的并發性,支持函數式編程,可以更好地支持分布式系統。在大數據時代,為了提高應用程序的并發性,函數式編程日益受到關注。Scala提供的函數式編程風格,已經吸引了大量的開發者;
? Scala兼容Java,可以與Java互操作。Scala代碼文件會被編譯成Java的class文件(即在JVM上運行的字節碼)。開發者可以從Scala中調用所有的Java類庫,也同樣可以從Java應用程序中調用Scala的代碼。此外,Java是最為熱門的編程語言,在企業中有大量的Java開發人員,國內高校大多數也都開設了Java課程。因此,學習Scala可以很好地實現與Java的銜接,讓之前在Java方面的學習和工作成果能夠得到延續;
? Scala代碼簡潔優雅。Scala語言非常精煉,實現同樣功能的程序,Scala所需的代碼量通常比Java少一半或者更多。短小精悍的代碼常常意味著更易維護,擁有其他語言編程經驗的編程人員很容易讀懂Scala代碼;
? Scala支持高效的交互式編程。Scala提供了交互式解釋器(Read-Eval-Print Loop,REPL),因此,在spark-shell中可進行交互式編程(即表達式計算完成就會輸出結果,而不必等到整個程序運行完畢,因此,可即時查看中間結果,并對程序進行修改),這樣可以在很大程度上提升開發效率;
? Scala是Spark的開發語言。由于Spark計算框架本身就是采用Scala語言開發的,因此,用Scala語言編寫Spark應用程序可以獲得最好的執行性能。
需要說明的是,雖然本教材采用Scala語言開發Spark應用程序,但是,讀者通過學習本教材熟悉了Spark的運行原理和編程方法以后,就能很容易地通過閱讀相關工具書和網絡資料,快速學習如何使用Java和Python等語言開發Spark應用程序。