renguocheng 发表于 2017-9-11 16:23:55

入门Spark SQL,你需要知道这些


       对大数据有所了解的人都知道Spark具有的优势,Spark也越来越被各个企业、大数据工程师所推崇。然而,Spark团队并没有因此而满足,因为Spark采用了Hive的语法解析器、查询优化器等,制约了One Stack Rule Them All的既定方针和各组件的相互集成。因此,Spark SQL变诞生了。Spark SQL摒弃了Spark的代码,但保留了Spark诸如内存列存储、Hive兼容性等优势。值得一提的是,Spark SQL成功摆脱了对Hive的依赖。
   
一、Spark SQL的特点分析:
·支持多种语言:Java、R、Scala、Python等。
·性能更加优化:如内存列存储、动态字节码生成等。
·数据兼容性强:能够从外部数据库、Hive表等多种途径中获取数据。
·组件得到拓展:SQL语法解析器、优化器、分析器都可以进行重新定义。

二、Spark SQL的组成原理
·Spark SQL内核
在处理数据的输入输出时,可以从不同的数据源获取数据。如:已有RDD、Hive表以及外部数据库,执行查询,之后将查询结果输出成DataFrame。
·支持对Hive数据的处理。
·Catalyst优化
可以优化处理查询语句的整个过程(解析、榜等、优化等),由关系代数、表达式、查询优化组成

三、Spark SQL的执行流程原理



四、Spark SQL的性能原理

·内存列式缓存:即内存列式缓存,再次执行时不需要重复读取,只需要扫描需要的列,然后自动调整压缩比,将内存使用率和GC压力得到了最小化。
·采用了动态代码和字节码生成技术,有效地提升了重复表达式求值查询的速率。
·Tungsten优化:摒弃了JVM,采用Spark自己管理内存,避免了JVM GC带来的性能损失。
Java对象被存储成了Spark自己的二进制格式,这样便可以直接在二进制格式上进行计算,省去了序列化和反序列化的时间,使得格式更紧凑,节省更多的内存空间。

      更多相关请查看http://www.mojuedu.com相关文章
页: [1]
查看完整版本: 入门Spark SQL,你需要知道这些