為什么說Spark SQL遠(yuǎn)遠(yuǎn)超越了MPP SQL

Apache Spark Future 吐槽Spark,其實我看了半天沒看懂他在說啥。不過總體而言DataBricks公司目前很多的做法其實蠻合我的理念的。

前言

這里說的并不是性能,因為我沒嘗試對比過(下文會有簡單的說明),而是嘗試從某種更高一層次的的角度去看,為什么Spark SQL 是遠(yuǎn)遠(yuǎn)超越MPP SQL的。

Spark SQL 和 MPP SQL 其實不在一個維度上。簡而言之,

  • MPP SQL 是 Spark SQL 的一個子集
  • Spark SQL 成為了一種跨越領(lǐng)域的交互形態(tài)

MPP SQL 是 Spark SQL 的一個子集

MPP SQL 要解決的技術(shù)問題是海量數(shù)據(jù)的查詢問題。這里根據(jù)實際場景,你還可以加上一些修飾詞匯,譬如秒級,Ad-hoc 之類。

在實際業(yè)務(wù)中

  1. 探索類業(yè)務(wù),比如KPI多維分析,用戶畫像查詢,數(shù)據(jù)科學(xué)家摸底數(shù)據(jù)等
  2. 運營類業(yè)務(wù),比如報表(現(xiàn)在很多BI系統(tǒng)基本上完全基于SQL來構(gòu)建),各種運營臨時統(tǒng)計需求
  3. 分析類業(yè)務(wù),不過這個會比較淺顯。顯然,真實的的分析應(yīng)該主要依托一些統(tǒng)計類,機器學(xué)習(xí)等技術(shù)的支持
  4. 運維類業(yè)務(wù),比如實時查詢查看海量的系統(tǒng)日志等

MPP SQL 是有一定的性能優(yōu)勢的,從HAWQ,Impala 等都是基于MPP架構(gòu)的。然而僅限于此。這些功能Spark SQL 目前都已經(jīng)涵蓋了,MPP SQL能做的事情,Spark SQL都完成的很漂亮。

依托于Spark 自身的全平臺性(漂亮的DataSource API以及各個廠商的努力適配),Spark SQL 基本上可以對接任意多個異構(gòu)數(shù)據(jù)源進行分析和查詢。大家可參考我的一個簡略實現(xiàn) 利用StreamingPro實現(xiàn)SQL-交互式查詢。

關(guān)于性能可以再多說兩句:

  • 得益于一些具有復(fù)雜存儲格式的文件的誕生,譬如CarbonData, Spark SQL 已經(jīng)實現(xiàn)海量數(shù)據(jù)的秒級查詢
  • Spark 自身通過Tungsten等項目的優(yōu)化(尤其是代碼自動生成),速度越來越生猛,而JVM譬如GC帶來的問題則可以進一步通過off-heap的方式減少。

所以 Spark SQL 和 MPP SQL在性能上的差距也會越來越小。

Spark SQL 成為了一種跨越領(lǐng)域的交互形態(tài)

Spark 通過使用DS(2.0統(tǒng)一了DF 和 DS,使用一套SQL引擎)極大的增強了交互語意,意味著你可以用SQL(DS)作為統(tǒng)一的交互語言完成流式,批處理,交互式查詢,機器學(xué)習(xí)等大數(shù)據(jù)領(lǐng)域常見場景。這在任何一個系統(tǒng)都是不多見的,也可見Spark團隊的抽象能力。

引言中的那篇文章其實是作者吐槽Spark 團隊對Spark core(RDD)那層關(guān)注太少了,所以開始發(fā)牢騷。

現(xiàn)在我們再回過頭來看我們常見的一些業(yè)務(wù):

  1. 實時分析類業(yè)務(wù)
  2. 探索類業(yè)務(wù)
  3. 分析預(yù)測類業(yè)務(wù)
  4. 運營報表類業(yè)務(wù)

首先這些業(yè)務(wù)都可以使用Spark 來實現(xiàn)。其次統(tǒng)一的交互接口都是DS(DF/SQL),并且DS/SQL 是一套極度易用并且廣泛普及和接受的。

當(dāng)然Spark 也不是一步就做到這點的,原來流式計算和批量計算就是兩套API, DF 和 DS 也是兩套API,后面經(jīng)過發(fā)展,Databricks 團隊也在積極思考和慢慢成長,經(jīng)過先前已經(jīng)有的積累,才做到現(xiàn)在的這一步。

所以本質(zhì)上DS/SQL 已經(jīng)成為除了RDD API 以外,另外一套通用的,統(tǒng)一的交互式API,涵蓋了流式,批處理,交互式查詢,機器學(xué)習(xí)等大數(shù)據(jù)領(lǐng)域。這也是我們第一次達成這樣的統(tǒng)一,目前來看也僅在Spark平臺上得以實現(xiàn),它是的大數(shù)據(jù)的使用和學(xué)習(xí)門檻進一步降低,功在千秋。

RDD VS DS/SQL

DS/SQL 是一套數(shù)據(jù)類型首先,操作種類受限的表達語言,意味著Spark 團隊可以做更好的性能優(yōu)化,也意味著門檻更低,在易用性和性能上都能取得良好的平衡

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容