本文讲讲Spark SQL的几个里程碑的更新升级。
1. spark 1.0.0诞生了Spark SQL
官方版本是 spark 1.0.0 引入的 Spark SQL 模块。当时这个模块的核心实际上就是一种新类型的 RDD ,叫做 SchemaRDD 。 SchemaRDD 就是类型为 ROW 的 RDD, 但同时又包含了一个描述每一列数据类型的 schema 信息。 SchemRDD 也可类似于传统数据库的一张表。 SchemaRDD 可以从已有的 RDD 创建,可以是 Parquet 文件, json 数据集或则 HiveQL 生成。该版本引入是在 2014 年五月 30 日。
2. Spark 1.2.0诞生了ML机器学习库
Ml机器学习库是基于SchemaRDD的,后来的版本是基于Dataframe的,可以直接与Spark SQL进行交互。
3. Spark 1.3.0 诞生了Dataframe
Spark 1.3 的时候做了一个重大变革。就是将 SchemaRDD 重命名为了 DataFrame ,主要原因是 DataFrame 不再直接继承自 RDD ,而是自己维护和实现了自己的功能函数。但是 DataFrame 可以通过调用 .rdd 转化为 RDD 。
4. spark 1.6.0诞生了Dataset和SparkSession
Spark 1.6 的时候也是有了重大调整,增加了 Dataset 的概念 , 类似 RDD ,在享受 Spark SQL 执行引擎性能优化的同时允许用户使用自定义对象和 lambda 函数。
在引入 Dataset 的同时,也引入了 SparkSession ,也即是会话管理功能,允许不同用户可以在使用不同配置和临时表的情况下共享统一的集群。
5. Spark 2.0.0诞生了Strcutured Streaming
Spark 2.0 开始, Dataset API 和 Dataframe API 统一了。 Scala 版本, DataFrame 被类型定义成 Dataset[Row] , java 版本必须是要 Dataset[Row] 代替 Dataframe 。
SparkSession已经完全替换掉了旧的SQLContext和HiveContext。SQLContext和HiveContext为了保持兼容还在被保留。
上线了Structured Streaming。这个是Spark 流处理发展的主要方向,底层是基于Spark SQL 和 Catalyst 优化器,让用户像使用静态Dataset开发离线处理任务一样 使用流Dataset 开发流处理业务,这个就是依赖于Catalyst 优化器自动增量的查询计划。
从自Spark 2.x依赖的更新状态来看,Spark SQL及Catalyst 优化器已经成为Spark框架努力的方向,主要体现在:
1). 逐步废弃掉基于RDD的mllib机器学习库,着重发展基于DataFrame的ml库。目前是,基于RDD的机器学习库处于保留状态,后期会废弃。
2). Spark2.4.0 未对Spark Streaming(RDD-based)做进一步更新。Structured Streaming(dataframe-based)被大力优化更新,也有取代Spark Streaming之势头。
所以,spark 使用及爱好者要大力掌握好Spark SQL和Structured Streaming。
那么是不是就不要深入学习Spark Core和Spark Streaming了呢?
答案是否定的!
Spark Core是Spark SQL的基石,所以很有必要掌握好Spark Core。
Spark SQL和Structured Streaming处理的是结构化数据,非结构化数据,还是需要Spark Core和Spark Streaming进行解析处理。
Structured Streaming 的功能还不够完善,限制颇多,比如多流join之后不能聚合等,所以Spark Streaming的给用户以灵活处理的接口还是有用武之地的。
推荐阅读:
感谢点赞,转发!
以上所述就是小编给大家介绍的《Spark SQL 的几个里程碑》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 里程碑怎样设置才合理?
- GoLand 2019.1 Beta 发布,重要里程碑
- 里程碑,Apache ServiceComb 1.0.0 正式发布
- 里程碑,Apache ServiceComb 1.0.0 正式发布
- 里程碑 | Apache Dubbo 发布 v2.7.0
- Kotlin 1.4 第一个里程碑版本 M1 发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。