1. 程式人生 > >終於把Spark技術相關的內容總結全了,歡迎圍觀討論

終於把Spark技術相關的內容總結全了,歡迎圍觀討論

Spark是基於記憶體的迭代計算框架,適用於需要多次操作特定資料集的應用場合。需要反覆操作的次數越多,所需讀取的資料量越大,受益越大,資料量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用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程式。

以上就是今天的總結分享,歡迎大家一起交流討論!