好程式設計師大資料高階班分享 Spark知識點集合

好程式設計師IT發表於2019-05-23

   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程式比編寫Hadoop MapReduce程式要簡單的多,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程式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2645323/,如需轉載,請註明出處,否則將追究法律責任。

相關文章