大數據現在很火,也是未來的趨勢。經過這幾年的發展,不管是企業在職人士,還是在校大學生朋友,都意識到了大數據學習的重要性。大數據技術目前的人才很少,學習大數據出來之後的工資普遍高於其它技術。

  Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反覆操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)。

  

  1、Spark的核心是什麼?

  RDD是Spark的基本抽象,是對分散式內存的抽象使用,實現了以操作本地集合的方式來操作分散式數據集的抽象實現。RDD也是Spark非常核心的東西,它表示已被分區,不可變的並能夠被並行操作的數據集合,不同的數據集格式對應不同的RDD實現。

  RDD必須是可序列化的。RDD可以cache到內存中,每次對RDD數據集的操作之後的結果,都可以存放到內存中,下一個操作可以直接從內存中輸入,省去了MapReduce大量的磁碟IO操作。這對於迭代運算比較常見的機器學習演算法, 互動式數據挖掘來說,效率提升比較大。

  2、Spark的適用場景有哪些?

  由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。

  3、Spark支持的編程語言有哪幾種?

  Spark通過與編程語言集成的方式暴露RDD的操作,類似於DryadLINQ和FlumeJava,每個數據集都表示為RDD對象,對數據集的操作就表示成對RDD對象的操作。Spark主要支持的編程語言是Scala、java、python。

  Scala

  Spark使用Scala開發,默認使用Scala作為編程語言。編寫Spark程序比編寫HadoopMapReduce程序要簡單的多,SparK提供了Spark-Shell,可以在Spark-Shell測試程序。

  Java

  Spark支持Java編程,但對於使用Java就沒有了Spark-Shell這樣方便的工具,其它與Scala編程是一樣的,因為都是JVM上的語言,Scala與Java可以互操作,Java編程介面其實就是對Scala的封裝。

  Python

  現在Spark也提供了Python編程介面,Spark使用py4j來實現python與java的互操作,從而實現使用python編寫Spark程序。Spark也同樣提供了pyspark,一個Spark的python shell,可以以互動式的方式使用Python編寫Spark程序。


推薦閱讀:
相關文章