Spark-SQL优点是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
SparkSQL主要是在以下三点做了优化(主要是与Spark核心对比):
内存列存储(In-Memory Columnar Storage)
采用了内存列存储之后,减少了对内存的消耗,减少JVM的GC性能开销。 字节码生成技术(bytecode generation,即CG) Spark SQL在其catalyst模块的expressions中增加了codegen模块
对于SQL语句中的计算表达式
比如select num + num from t这种的sql,就可以使用动态字节码生成技术来优化其性能。
Scala代码优化
使用Scala编写的代码,对可能造成较大性能开销的代码,Spark SQL底层会使用更加复杂的方式进行重写,来获取更好的性能。 比如Option样例类、for循环、map/filter/foreach等高阶函数,以及不可变对象,都改成了用null、while循环等来实现,并且重用可变的对象。