Spark為什么選擇Scala

      網友投稿 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庫;

      Spark為什么選擇Scala

      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小時內刪除侵權內容。

      上一篇:調用鏈跨線程傳遞 ThreadLocal 對象對比
      下一篇:Java的反射機制
      相關文章
      亚洲国产精品无码久久一区二区 | 久久精品国产亚洲αv忘忧草| 亚洲中文字幕无码久久2017| 国内成人精品亚洲日本语音 | 亚洲AV永久纯肉无码精品动漫| 亚洲中文字幕第一页在线| 亚洲欧洲国产成人综合在线观看| 亚洲精品WWW久久久久久| 国产亚洲综合一区二区三区| 国产成人亚洲精品播放器下载| 亚洲AV无码一区二区乱子伦| 亚洲综合激情另类专区| 国产精品亚洲精品日韩已方 | 亚洲成网777777国产精品| 亚洲精品视频在线| 亚洲一级特黄无码片| 亚洲精品乱码久久久久久蜜桃 | 亚洲成A∨人片在线观看无码| 中文字幕亚洲精品| 久久久婷婷五月亚洲97号色| 日韩精品一区二区亚洲AV观看| 亚洲天堂中文字幕| 亚洲精品亚洲人成在线观看麻豆| 亚洲性无码av在线| 亚洲13又紧又嫩又水多| 亚洲无吗在线视频| 亚洲av午夜国产精品无码中文字| 国产亚洲人成在线播放| 亚洲第一黄片大全| 国产亚洲情侣一区二区无码AV| 亚洲精品自在在线观看| 亚洲精品你懂的在线观看| 亚洲AV无码成人精品区在线观看 | 亚洲熟妇久久精品| 国产亚洲女在线线精品| 久久久久亚洲爆乳少妇无| 亚洲精品无码MV在线观看| 久久亚洲sm情趣捆绑调教| 亚洲免费视频播放| 亚洲成AV人影片在线观看| 亚洲男女内射在线播放|