Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的大數據處理的利用程序。并且提供了用于機器學習 (MLlib), 流計算(Streaming), 圖計算 (GraphX) 等子模塊, 1.4.0 版本更是提供了與 R 語言的集成,這使得 Spark 幾近成了多領域通吃的全能技術。Spark 對數據的存儲,轉換,和計算都是基于1個叫 RDD(Resilient Distributed Dataset) 散布式內存的抽象,利用程序對需要計算的數據的操作都是通過對 RDD 的1系列轉化 (Transformation) 和動作 (Action) 算子完成的,其中轉化算子可以把1個 RDD 轉成另外一個 RDD,如 filter 算子可以通過添加過濾條件生成1個只包括符合條件的數據的新的 RDD。動作算子負責完成終究的計算,如 count 算子可以計算出全部 RDD 表示的數據集中元素的個數。關于 Spark 所支持的算子 和使用方法請參考 Spark 官方網站。
Spark是全部BDAS的核心組件,是1個大數據散布式編程框架,不但實現了MapReduce的算子map函數和reduce函數及計算模型,還提供更加豐富的算子,如filter、join、groupByKey等。是1個用來實現快速而同用的集群計算的平臺。
Spark將散布式數據抽象為彈性散布式數據集(RDD),實現了利用任務調度、RPC、序列化和緊縮,并為運行在其上的上層組件提供API。其底層采取Scala這類函數式語言書寫而成,并且所提供的API深度鑒戒Scala函數式的編程思想,提供與Scala類似的編程接口