Spark _21 _SparkSQL介绍
Shark
Shark是基于Spark計算框架之上且兼容Hive語法的SQL執行引擎,由于底層的計算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,當數據全部load在內存的話,將快10倍以上,因此Shark可以作為交互式查詢應用服務來使用。除了基于Spark的特性外,Shark是完全兼容Hive的語法,表結構以及UDF函數等,已有的HiveSql可以直接進行遷移至Shark上Shark底層依賴于Hive的解析器,查詢優化器,但正是由于SHark的整體設計架構對Hive的依賴性太強,難以支持其長遠發展,比如不能和Spark的其他組件進行很好的集成,無法滿足Spark的一棧式解決大數據處理的需求。
SparkSQL
- SparkSQL介紹
Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL產生的根本原因是其完全脫離了Hive的限制。
- Spark on Hive和Hive on Spark
Spark on Hive: Hive只作為儲存角色,Spark負責sql解析優化,執行。
Hive on Spark:Hive即作為存儲又負責sql的解析優化,Spark負責執行。
- DataFrame
DataFrame也是一個分布式數據容器。與RDD類似,然而DataFrame更像傳統數據庫的二維表格,除了數據以外,還掌握數據的結構信息,即schema。同時,與Hive類似,DataFrame也支持嵌套數據類型(struct、array和map)。從API易用性的角度上 看, DataFrame API提供的是一套高層的關系操作,比函數式的RDD API要更加友好,門檻更低。
DataFrame的底層封裝的是RDD,只不過RDD的泛型是Row類型。
- SparkSQL的數據源
SparkSQL的數據源可以是JSON類型的字符串,JDBC,Parquent,Hive,HDFS等。
- SparkSQL底層架構
首先拿到sql后解析一批未被解決的邏輯計劃,再經過分析得到分析后的邏輯計劃,再經過一批優化規則轉換成一批最佳優化的邏輯計劃,再經過SparkPlanner的策略轉化成一批物理計劃,隨后經過消費模型轉換成一個個的Spark任務執行。
- 謂詞下推(predicate Pushdown)
總結
以上是生活随笔為你收集整理的Spark _21 _SparkSQL介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark2.3.0的DataFrame
- 下一篇: 什么时候该用MySQL,什么时候该用ES