SparkSQL

1.Hive:

表的类型:内部表、外部表、临时表、分区表(动态、静态)分桶表

创建各种表的关键字:
外部表:external
临时表:TEMPORARY
分区表:partitioned by (dt string)
分桶表:CLUSTERED BY



2.SparkSQL:

Hive依赖于HDFS和MR,而SparkSQL依赖有HDFS和Spark core

2.1.Shark:

Shark是SparkSQL的最开始的一个版本,后来改名为SparkSQL。

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

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

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

当有一个sql语句传给Shark,它底层的解析器,查询优化器把sql解析成一个个Spark任务,底层的解析器,优化器都是HIive的

2.2Spark官网:http://spark.apache.org/

2.2.1官网信息

速度:
在这里插入图片描述
时间对比图:
在这里插入图片描述
Spark生态圈:在这里插入图片描述
2.2.2运行过程:
在这里插入图片描述
SparkSQL:
优点:底层的解析器,优化器都是自己的。

2.2.3产生关系:

Hive是Shark的前身,Shark是SparkSQL的前身

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

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

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

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

2.2.4最近新出的组合名称:

SparkSQL on Hive:(常用)
Hive只是作为了存储的角色
SparkSQL作为计算的角色

Hive on Spark:
Hive承担了一部分计算(解析SQL,优化SQL…)的和存储
Spark作为了执行引擎的角色

3.DataFrame:

3.1DataFrame介绍:

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

在SparkSQL中,一切计算都基于DataFrame.。DataFrame底层封装的是 RDD,SparkSQL底层封装的是SparkCore.DataFrame可以理解为二维表

3.2RDD vs DataFrame
在这里插入图片描述
对于一个RDD,想要拿到每个Person对象的Name值:需要一条条的遍历,把对象放在内存中,再去解析拿到想到的属性,会产生冗余数据(还有其他属性的存在,极大的占用了内存)
而对于DataFrame,是有行有列的。当想拿到哪个属性时,直接拿出相应的列即可。

3.3SprkSQL所能接收的数据源:

在这里插入图片描述

3.4SparkSQL的底层架构:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值