Spark是一個通用的巨量資料分析引擎,具有高效能、易用性和普遍性等特點。
架構
使用情境
離線ETL
離線ETL主要應用於資料倉儲,對大規模的資料進行抽取(Extract)、轉換(Transform)和載入(Load),其特點是資料量大,耗時較長,通常設定為定時任務執行。
線上資料分析(OLAP)
線上資料分析主要應用於BI(Business Intelligence)。分析人員互動式地提交查詢作業,Spark可以快速地返回結果。除了Spark,常見的OLAP引擎包括Presto和Impala等。Spark 3.0的主要特性在EMR中的Spark 2.4版本已支援,更多特性詳情請參見Spark SQL Guide。
Realtime Compute
Realtime Compute主要應用於即時大屏、即時風控、即時推薦和即時警示監控等。Realtime Compute主要包括Spark Streaming和Flink引擎,Spark Streaming提供DStream和Structured Streaming兩種介面,Structured Streaming和Dataframe用法類似,門檻較低。Flink適合低延遲情境,而Spark Streaming更適合高吞吐的情境,詳情請參見Structured Streaming Programming Guide。
機器學習
Spark的MLlib提供了較豐富的機器學習庫,包括分類、迴歸、協同過濾、彙總,同時提供了模型選擇、自動調參和交叉驗證等工具來提高生產力。MLlib主要支援非深度學習的演算法模組,詳情請參見Machine Learning Library (MLlib) Guide。
圖計算
Spark的GraphX支援圖計算的庫,支援豐富的圖計算的運算元,包括屬性運算元、結構運算元、Join運算元和鄰居彙總等。詳情請參見GraphX Programming Guide。