Q1:Spark SQL和Shark有啥區別?git
Shark須要依賴於Hadoop上Hive去作SQL語句的解析和分析Spark,而SQL是主要依賴了Catalyst這個新的查詢優化框架,在把SQL解析成邏輯執行計劃以後,利用Catalyst包裏的一些類和接口,執行了一些簡單的執行計劃優化,最後變成RDD的計算;github
Databricks表示,Shark更可能是對Hive的改造,替換了Hive的物理執行引擎,所以會有一個很快的速度。然而,不容忽視的是,Shark繼承了大,量的Hive代碼,所以給優化和維護帶來了大量的麻煩。隨着性能優化和先進分析整合的進一步加深,基於MapReduce設計的部分無疑成爲了整個項目的瓶頸;數據庫
Spark新發布的Spark SQL組件讓Spark對SQL有了別樣於Shark基於Hive的支持:apache
l 其一,能在Scala代碼裏寫SQL,支持簡單的SQL語法檢查,能把RDD指定爲Table存儲起來。此外支持部分SQL語法的DSL。性能優化
l 其二,支持Parquet文件的讀寫,且保留Schema。框架
l 其三,能在Scala代碼裏訪問Hive元數據,能執行Hive語句,而且把結果取回做爲RDD使用。工具
Q2:Spark SQL會提供JDBC嗎?oop
Spark官方指出:「Spark SQL includes a server mode with industry standard JDBC and ODBC connectivity.」;性能
Jdbc support branchis under going。 大數據
Q3:執行Task不是還要跟Driver交互嗎?
執行Task時要和Driver交互,動態的向Driver報告執行狀況。
Q4:對於RDD上的數據如何取出來供外部程序使用?
使用save等方法保存在HDFS之上;
而後經過Sqoop等工具處處到MySQL等數據庫供外部使用;
也能夠保存在HBase之上。
Q5:Spark官網上說Spark SQL不是很強大,還說建議你們複查查詢的時候仍是使用Hive。
Spark 1.0和1.0.1版本複雜的查詢須要使用Hive;
隨着Spark版本的更新,能夠作任何複雜度的查詢。