SparkSQL入门

介绍

  • 构建在SparkCore基础之上的一个SQL计算模块
  • 前身叫shark,基于hive,hive发展慢,制约了shark的发展
  • 独立出来新的项目spark sql
  • 处理结构化数据

Spark SQL 是用于结构化数据处理的 Spark 模块。与基本的 Spark RDD API 不同,Spark SQL 提供的接口为 Spark 提供了有关数据结构和正在执行的计算的信息。在内部,Spark SQL 使用此额外信息来执行额外的优化。有几种方法可以与 Spark SQL 进行交互,包括 SQL 和数据集 API。计算结果时,使用相同的执行引擎,与用于表示计算的 API/语言无关。这种统一意味着开发人员可以轻松地在不同 API 之间来回切换,基于这些 API 提供了表达给定转换的最自然方式。

Spark SQL 编程模型

DataFrame和Dataset是SparkSQL中的编程模型。DataFrame和Dataset我们都可以理解为是一张mysql中的二维表,表有什么?表头,表名,字段,字段类型。RDD其实说白了也是一张二维表,但是这张二维表相比较于DataFrame和Dataset却少了很多东西,比如表头,表名,字段,字段类型,只有数据。

​ Dataset是在spark1.6.2开始出现出现的api,DataFrame是1.3的时候出现的,早期的时候DataFrame叫SchemaRDD,SchemaRDD和SparkCore中的RDD相比较,就多了Schema,所谓约束信息,元数据信息。

​ 一般的,将RDD称之为Spark体系中的第一代编程模型;DataFrame比RDD多了一个Schema元数据信息,被称之为Spark体系中的第二代编程模型;Dataset吸收了RDD的优点(强类型推断和强大的函数式编程)和DataFrame中的优化(SQL优化引擎,内存列存储),成为Spark的最新一代的编程模型。

RDD

弹性分布式数据集,是Spark对数据进行的一种抽象,可以理解为Spark对数据的一种组织方式,更简单些说,RDD就是一种数据结构,里面包含了数据和操作数据的方法

从字面上就能看出的几个特点:
a. 弹性: ​
数据可完全放内存或完全放磁盘,也可部分存放在内存,部分存放在磁盘,并可以自动切换
​ RDD出错后可自动重新计算(通过血缘自动容错) ​ 可checkpoint(设置检查点,用于容错),可persist或cache(缓存)
​ 里面的数据是分片的(也叫分区,partition),分片的大小可自由设置和细粒度调整
b. 分布式:
​ RDD中的数据可存放在多个节点上
c. 数据集: ​
数据的集合,没啥好说的

​ 相对于与DataFrame和Dataset,RDD是Spark最底层的抽象,目前是开发者用的最多的,但逐步会转向DataFrame和Dataset(当然,这是Spark的发展趋势)

编程入口

1. spark2.0以前,有两个入口

  • sql Context
  • hive Context 是sqlContext的子类,提供了一些特殊的方法与函数,比如开窗函数等
  1. spark2.0以后,将两者进行了合并成为SparkSession,SparkSession构建会使用工厂方法.
  val spark:SparkSession=SparkSession.builder().appName("Demo").master("local").getOrCreate()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值