SparkSql 01 介绍

1. Shark

Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式查询应用服务来使用。除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及UDF函数等,已有的Hive Sql可以直接进行迁移至Shark上Shark底层依赖于Hive的解析器,查询优化器,但正是由于SHark的整体设计架构对Hive的依赖性太强,难以支持其长远发展,比如不能和Spark的其他组件进行很好的集成,无法满足Spark的一站式解决大数据处理的需求。

2. SparkSQL

1. SparkSQL介绍

Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制。

  • SparkSQL支持查询原生的RDD。 RDD是Spark平台的核心概念,是Spark能够高效的处理大数据的各种场景的基础。
  • 能够在scala/java.中写SQL语句。支持简单的SQL语法检查,能够在Scala中写Hive语句访问Hive数据,并将结果取回作为RDD使用。

2. Spark on Hive和Hive on Spark

  • Spark on Hive:
    Hive只作为储存角色,Spark负责sql解析优化,执行。
  • Hive on Spark:
    Hive即作为存储又负责sql的解析优化,Spark负责执行。
存储角色解析优化执行
Spark on HiveHiveSparkSpark
Hive on SparkHiveHiveSpark

3. Dataset与DataFrame

在这里插入图片描述

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

Dataset<Row> = DataFrame

RDD(源数据) + schema(元数据) ≈ 表

4. SparkSQL的数据源

SparkSQL的数据源可以是JSON类型的字符串,JDBC,Parquet,Hive,HDFS等。
在这里插入图片描述

5. SparkSQL底层架构

首先拿到sql后解析一批未被解决的逻辑计划,再经过分析得到分析后的逻辑计划,再经过一批优化规则转换成一批最佳优化的逻辑计划,再经过SparkPlanner的策略转化成一批物理计划,随后经过消费模型转换成一个个的Spark任务执行。
在这里插入图片描述

6. 谓词下推(predicate Pushdown)

谓词----描述关系的词
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值