当前位置:   article > 正文

Spark笔记10之SparkSQL_请分析spark sql出现的原因

请分析spark sql出现的原因

一、Shark(SparkSQL的前身)

•       Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式查询应用服务来使用。

       除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及UDF函数等,已有的HiveSql可以直接进行迁移至Shark上

•      Shark底层依赖于Hive的解析器,查询优化器,但正是由于SHark的整体设计架构对Hive的依赖性太强,难以支持其长远发展,比如不能和Spark的其他组件进行很好的集成,无法满足Spark的一栈式解决大数据处理的需求

 

•1.1HiveShark的前身,SharkSparkSQL的前身

•1.2相对于Shark,SparkSQL有什么优势呢?

SparkSQL产生的根本原因,其完全脱离了Hive的限制

SparkSQL支持查询原生的RDD,这点就极为关键了。RDD是Spark平台的核心概念,是Spark能够高效的处理大数据的各种场景的基础

能够在Scala中写SQL语句。支持简单的SQL语法检查,能够在Scala中写Hive语句访问Hive数据,并将结果取回作为RDD使用

•1.3最近出来另个组合名称:

SparkSQL on Hive

Hive只是作为了存储的角色

SparkSQL作为计算的角色

Hive on Spark

Hive承担了一部分计算(解析SQL,优化SQL...)的和存储

Spark作为了执行引擎的角色

二、Spark SQL的最佳搭档Dataframe

 

Spark SQL是Spark的核心组件之一,于2014年4月随Spark 1.0版一同面世,在Spark 1.3当中,Spark SQL终于从alpha(内测版本)阶段毕业。

Spark 1.3更加完整的表达了Spark SQL的愿景:让开发者用更精简的代码处理的数据,同时让Spark SQL自动优化执行过程,以达到降低开发成本,提升数据分析执行效率的目的。

与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还掌握数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上 看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低

2.1 Spark SQL 基于Spark core上 ,Dataframe基于RDD上

2.2 RDD vs DataFrame = SchemaRDD = RDD<ROW>

三、SparkSQL DataSource

四、Spark SQL 底层架构

五、DataFrame创建方式

DataFrame创建的方式

json文件(不能是嵌套格式的json

sqlContext.read().format(“json”).load(“path”)

sqlContext.read().json(“path”)

读取json格式的RDD

RDD的元素类型是String,但是格式必须是JSON格式

读取parquet文件创建DF

RDD<String>

通过非json格式的RDD来创建出来一个DataFrame

通过反射的方式

动态创建schema的方式

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/389368?site
推荐阅读
相关标签
  

闽ICP备14008679号