SparkSQL概念學習系列之為什麼使用SparkSQL?(二)

技術小哥哥發表於2017-11-13

 簡單地說,Shark 的下一代技術 是Spark SQL。

  由於 Shark 底層依賴於 Hive,這個架構的優勢是對傳統 Hive 使用者可以將 Shark 無縫整合進現有系統執行查詢負載。

  但是也看到一些問題:一方面,隨著版本升級,查詢優化器依賴於 Hive,不方便新增新的優化策略,需要進行另一套系統的學習和二次開發,學習成本很高。

  另一方面, MapReduce是程式級並行,例如: Hive 在不同的程式空間會使用一些靜態變數,當在同一程式空間進行多執行緒並行執行,多執行緒同時寫同名稱的靜態變數會產生一致性問題,

所以Shark 需要使用另外一套獨立維護的 Hive 原始碼分支。而為了解決這個問題 AMPLab 和Databricks 利用 Catalyst 開發了 Spark SQL。



Spark 的全棧解決方案為使用者提供了多樣的資料分析框架,機器學習、圖計算、流計算如火如荼的發展和流行吸引了大批的學習者,為什麼人們今天還是要重視在大資料環境下使用 SQL 呢?筆者認為主要有以下幾點原因:

1)易用性與使用者慣性。在過去的很多年中,有大批的程式設計師的工作是圍繞著 資料庫 + 應用 的架構來做的,因為 SQL 的易用性提升了應用的開發效率。程式設計師已經習慣了業務邏輯程式碼呼叫 SQL 的模式去寫程式,慣性的力量是強大的,如果還能用原有的方式解決現有的大資料問題,何樂而不為呢?提供 SQL 和 JDBC 的支援會讓傳統使用者像以前一樣地書寫程式,大大減少遷移成本。

2)生態系統的力量。很多系統軟體效能好,但是未取得成功和沒落,很大程度上因為生態系統問題。傳統的 SQL 在 JDBC、 ODBC、 SQL 的各種標準下形成了一整套成熟的生態系統,很多應用元件和工具可以遷移使用,像一些視覺化的工具、資料分析工具等,原有企業的 IT 工具可以無縫過渡。

    3)資料解耦, Spark SQL 正在擴充套件支援多種持久化層,使用者可以使用原有的持久化層儲存資料,但是也可以體驗和遷移到 Spark SQL 提供的資料分析環境下進行 BigData 的分析。

 

 

本文轉自大資料躺過的坑部落格園部落格,原文連結:http://www.cnblogs.com/zlslch/p/5725017.html,如需轉載請自行聯絡原作者


相關文章