全部產品
Search
文件中心

E-MapReduce:Spark概述

更新時間:Aug 31, 2024

Spark是一個通用的巨量資料分析引擎,具有高效能、易用性和普遍性等特點。

架構

Spark架構如下圖所示,基於Spark Core構建了Spark SQL、Spark Streaming、MLlib和Graphx四個主要編程庫,分別用於離線ETL(Extract-Transform-Load)、線上資料分析、Realtime Compute、機器學習和圖計算等情境,詳情請參見Apache Spark官網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