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版本的更新,能够作任何复杂度的查询。