Spark技术互动问答分享

本文探讨了SparkSQL与Shark的区别,指出Shark依赖Hive进行SQL解析,而SparkSQL采用Catalyst优化框架。文章还介绍了SparkSQL的新特性,如支持Scala中的SQL语法、Parquet文件操作及Hive元数据访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q1:Spark SQL和Shark有啥区别?

  • Shark需要依赖于HadoopHive去做SQL语句的解析和分析Spark,而SQL主要依赖了Catalyst这个新的查询优化框架,在把SQL解析成逻辑执行计划之后,利用Catalyst包里的一些类和接口,执行了一些简单的执行计划优化,最后变成RDD的计算;

  • Databricks表示,Shark更多是对Hive的改造,替换了Hive的物理执行引擎,因此会有一个很快的速度。然而,不容忽视的是,Shark继承了大,量的Hive代码,因此给优化和维护带来了大量的麻烦。随着性能优化和先进分析整合的进一步加深,基于MapReduce设计的部分无疑成为了整个项目的瓶颈;

  • Spark新发布的Spark SQL组件让SparkSQL有了别样于Shark基于Hive的支持:

  • 其一,能在Scala代码里写SQL,支持简单的SQL语法检查,能把RDD指定为Table存储起来。此外支持部分SQL语法的DSL

  • 其二,支持Parquet文件的读写,且保留Schema

  • 其三,能在Scala代码里访问Hive元数据,能执行Hive语句,并且把结果取回作为RDD使用。

Q2:Spark SQL会提供JDBC吗?

  • 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.01.0.1版本复杂的查询需要使用Hive

  • 随着Spark版本的更新,可以做任何复杂度的查询。

 

转载于:https://my.oschina.net/u/1791057/blog/294575

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值