好程序員大數據高端班分享 Spark知識點集合

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

一、Spark的核心是什麼?python

RDD是Spark的基本抽象,是對分佈式內存的抽象使用,實現了以操做本地集合的方式來操做分佈式數據集的抽象實現。RDD也是Spark很是核心的東西,它表示已被分區,不可變的並可以被並行操做的數據集合,不一樣的數據集格式對應不一樣的RDD實現。web

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

二、Spark的適用場景有哪些?shell

因爲RDD的特性,Spark不適用那種異步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來講Spark的適用面比較普遍且比較通用。數據庫

三、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程序。

相關文章
相關標籤/搜索