在大數據的學習當中,學到Spark部分,就免不了需要Scala這門語言了,Scala是Spark框架的原生程式語言,想要真正把Spark搞懂,那麼對Scala自然也需要相應程度的掌握。今天的大數據入門分享,我們就來講講Scala函數式編程。提到Scala,首先會提到的一個概念,就是函數式編程,這也是Scala語言區別與其他程式語言的典型特徵。Scala是一門多範式(multi-paradigm)的程式語言,設計初衷是要集成面向對象編程和函數式編程的各種特性。
在大數據處理場景下,Scala語言有著相當的優勢——在實際運行中,Scala原始碼被編譯為Java字節碼,所以可以運行在JVM上,可以調用現有的Java類庫,併兼容現有的Java程序。命令式編程VS函數式編程命令式編程,程序邏輯的基本元素是:變量+操作符+控制結構,這些元素構成一條條的代碼指令,因此,稱之為命令式編程。函數式編程,程序邏輯由:map+匿名函數組成。整個代碼中,看不到變量、控制結構、操作符等元素,看到的只有函數,因此,函數式編程的本質就是:程序邏輯的基本元素是函數。
理解函數式編程命令式編程中,程序邏輯的基本元素是:變量+操作符+控制結構;函數式編程中,程序邏輯的基本元素是:函數;面向對象編程中,程序邏輯的基本元素是:對象+操作符+控制結構;大部分的程序邏輯,命令式編程和函數式編程都可以實現;命令式編程的思路更加偏向於計算機本身,而函數式編程的思路更偏向於人的思維;Scala提供了大量的特性,例如:val常量,匿名函數、高階函數、閉包、柯裡化等,來支持函數編程;函數式編程有利於程序自動並行化,只需對numList做一個簡單的數據劃分,將numList劃分成n個部分,每個部分都執行map()操作,最後匯總結果即可,這個工作是一個固定的模式,可以由機器來完成;編程時,要注意培養自己使用函數式編程的習慣,嘗試將邏輯抽象成函數,將函數作為程序邏輯的組成元素,同時,還可以多閱讀別人的代碼,如Spark的實現,吸取其中有益的經驗,久而久之,就可以寫出很專業的的函數式編程代碼。
編程方式的選擇Scala支持命令式編程、函數式編程、面向對象編程。那麼在實際編程中該如何選擇呢?在實踐中,編程方式的選擇,要以功能實現為第一要義。例如,面向對象支持多態、繼承,這些特性對於代碼復用、簡化邏輯有很大幫助,因此,有類似需求的時候,可以考慮面向對象編程;又比如,函數式編程對程序並行化非常友好,因此,有類似需求的時候,可以考慮函數式編程等等,此外,如類似數學推理的需求,用函數式編程也是比較合適的。切記:不可因為偏愛某種編程方式,而生搬硬套,為了編程而編程,忘記出發點,是不可取的。關於大數據入門,Scala函數式編程,以上就為大家做了簡單的介紹了。Spark框架在大數據技術生態當中,佔據著相當重要的地位,而涉及到Spark學習,也必然離不開Scala函數式編程的學習與掌握。