在Hadoop撐起大數據生態系的半邊天後,後起之秀Spark針對Map/Reduce的效能瓶頸(必須落地的暫存檔)予以重構,採用純記憶體的計算模型將大數據運算提升到新高度。自此Spark變成了大數據工程師不得不鑽研的顯學,更是莘莘學子學習大數據平台的起點。然而Spark平台並不像Haoop一樣以Java語言為主,它主要著重在Scala和Python,不過要真正發揮Spark的運算能力,還是非得使用Scala這個Spark用的基底語言。
和物件導向的Java截然不同,Scala是函數式導向的程式語言。最大的特色就是「函數是一等公民」,更具體而言,函數本身可以當做變數來自由傳遞,進而實現另一種和物件導向語言完全不同的「封裝」方法。依Scala的函數式設計實做出的map、reduce、foreach功能,都被Spark充分運用成為RDD分散式資料集的核心功能,因此想靈活地開發Spark計算程式,必然得對Scala的基礎下一番功夫。更別說Scala在許多方面,都擁有著獨特而不好類比的語言特性,像是不可變性的變數、Unit和Any類型、代碼堆、Case類等等。有太多太多對Java開發人員而言,丈二金剛摸不著頭腦的術語與觀念。而這些Scala的基本功,都濃縮在這本「快速上手 Scala:Spark 大數據分析入門」書中。
最後值得一提就是,既便你辛辛苦苦地學會並撰寫出一個可以運作的大數據Spark(Scala)程式,最後的魔王關卡才會出現。Scala語言的編譯工具是SBT,設計思維等同Java開發人員熟悉的Maven和Gradle。但畢竟是完全不同的工具,想要簡單地編譯出一個能上線佈署的執行JAR檔,中間試誤(trial and error)的挫折感,一不小心就會讓你想躺平放棄(用PySpark算了!)。別灰心,這本書中在最後一個章節,大方地分享如何迎刃而解地編譯出一個JAR執行檔,開啟你走上Spark大數據工程師的道路。在研讀其它Spark專書之前,如果能先看過這本「快速上手 Scala:Spark 大數據分析入門」,真的可以少花虛功,建立長久受用的基礎知識。


