我打字形成的文檔為什么不能 轉存的其他存盤(為什么文檔不能打字了)
941
2022-05-30
Spark為什么選擇Scala
1.???? Scala特點
第一眼看到luxor-core中的Scala代碼時(之前沒有讀過Scala的任何代碼)就感覺非常迷茫。獨特的語法和編寫方式,各種各樣的語法糖(如果不去看專業書籍或者Scala手冊根本不明白),代碼編寫靈活、隨意,讓人觸不及防。
但是不同的語言有不同的特點和各自不同優勢,大部分應用程序選擇語言時最關鍵的應該是看語言使用的類庫適不適合自身; 所以如果不能深入理解Scala語言的優勢,就不知道如何發揮Scala的最大優勢。
Scala是一門現代化的多泛式編程語言,志在以簡練、優雅以及類型安全的方式來表達常用編程模式,并且平滑集成了面向對象和函數語言的特性。Scala具有以下特點:
1)????? 面向對象:Scala是存面向對象的語言,從某種意義上來講所有數值都是對象;通過class和trait關鍵字來描述對象的類型和行為;class的抽象可由子類化和一種靈活的機遇mixin的組合機制(可作為多重繼承的簡單替代方案)來擴展;
2)????? 函數式:Scala還是一個函數式語言,在某種意義上所有數值都是函數;Scala匿名函數提供了輕量級語法,支持高階函數,嵌套函數等;
3)????? 靜態類型:Scala配備了一套富有變現力的類型系統(通過類型推斷避免了冗余性;通過模式匹配、組織和編寫類型新方法提高靈活性),他可以以一種安全的和一致的方式唄被使用;
4)????? 可擴展性:Scala提供了一個獨特的語言組合機制,可以更加容易的以類庫的形式增加新的語言結構;
5)????? 于Java和.Net相相互操作:Scala設計時就考慮了與流行語言編程環境的良好交互,如Java 運行時環境Jre和.Net框架(CLR);特別是與主流面向對象語言,如Java和C#盡量無縫交互;Scala有像Java和C#一樣的編譯模型(獨立編譯,動態裝載類),允許訪問成千上萬的高質量類庫;
2.???? Spark為什么選擇Scala
現在Spark是大數據領域的殺手級應用框架,BAT和我司等一些大公司都在使用Spark做大數據分析了。對于久經考驗的Spark使用Scala的合適性已經毋庸置疑了,Spark選擇Scala的原因除了語言本身以外,可能更多的構建在這語言之上的類庫,社區和生態圈(包括文檔和數據、衍生類庫、商業支持,成熟產品等等),總結起來有以下幾點:
1)?? Api能夠做的更加優雅:這是框架設計師第一個要考慮的問題,框架的用戶是應用開發程序員,Api是否優雅直接影響用戶體驗;
2)?? 能夠融合到Hadoop生態圈:Hadoop現在是大數據事實標準,Hadoop生態是運行于JVM的,而Spark的崛起不是要替代Hadoop,而是要融入Hadoop生態圈;所以Spark運行也是基于JVM,因為Spark是基于Hadoop的文件系統HDFS的,通過Java中的Hadoop Api于Hadoop進行交互;
3)?? 速度要快:Scala是靜態編譯的,所以和JRuby和Groovy比起來速度會快很多,非常接近Java
4)?? 函數式編程:函數式編程更加適用于大數據計算模型。它摒棄了數據和狀態的計算模型,著眼于函數本省,而非執行過程的數據和狀態的處理。函數范式邏輯清晰、簡單,非常適用用于處理基于不變數據的批處理工作;
5)?? 代碼簡練且能調用Java,開發效率非常高:可能Java 10行的代碼,Scala只需要一行;
且Scala能夠調用強大的Java庫;
Java是純粹面向對象語言(非函數式),所以對于大數據計算模型不太適用,且代碼太冗長,不如Scala簡練;Python雖然代碼簡練,但是性能比Scala慢,且與Hadoop交互非常糟糕,必須使用第三方庫(hadoopy)。
3.???? Scala的缺點
正所謂,金無足赤,人無完人,Scala也存在不少的弊端;
1)學習成本較高:因為語法越來越復雜;
2)代碼可讀性差:正是為了做到簡練,所以Scala定義了很多語法糖,這些語法糖對于不熟悉的人來說必須參考手冊才能讀懂;
3)程序員交替性差:Java有非常強大的模塊概念規范,所以程序員交接時比較容易理解,但是Scala語法相對比較隨意,所以會更難理解;
4)目前使用人群相對較少,網上資料相對較少;
附件: Spark為什么選擇Scala.docx 19.70KB 下載次數:2次
Scala spark 大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。