好程式設計師大資料培訓分享Spark技術總結

好程式設計師發表於2020-06-18

  好程式設計師 大資料 培訓分享 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 程式。


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

相關文章