热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SparkSQL的几个里程碑

本文讲讲SparkSQL的几个里程碑的更新升级。1.spark1.0.0诞生了SparkSQL官方版本是spark1.0.0引入的SparkSQL模块。当时这个模块的核心实际上就是

本文讲讲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日。

《Spark SQL的几个里程碑》
《Spark SQL的几个里程碑》

2. Spark 1.2.0诞生了ML机器学习库

Ml机器学习库是基于SchemaRDD的,后来的版本是基于Dataframe的,可以直接与Spark SQL进行交互。

《Spark SQL的几个里程碑》
《Spark SQL的几个里程碑》

3. Spark 1.3.0 诞生了Dataframe

Spark 1.3的时候做了一个重大变革。就是将SchemaRDD重命名为了DataFrame,主要原因是DataFrame不再直接继承自RDD,而是自己维护和实现了自己的功能函数。但是DataFrame可以通过调用 .rdd 转化为RDD。

《Spark SQL的几个里程碑》
《Spark SQL的几个里程碑》

4. spark 1.6.0诞生了Dataset和SparkSession

Spark 1.6的时候也是有了重大调整,增加了Dataset的概念,类似RDD,在享受Spark SQL执行引擎性能优化的同时允许用户使用自定义对象和lambda函数。

在引入Dataset的同时,也引入了SparkSession,也即是会话管理功能,允许不同用户可以在使用不同配置和临时表的情况下共享统一的集群。

《Spark SQL的几个里程碑》
《Spark SQL的几个里程碑》

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任务是数据倾斜了吗?


推荐阅读
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 开发笔记:Spark Java API 之 CountVectorizer
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SparkJavaAPI之CountVectorizer相关的知识,希望对你有一定的参考价值。 ... [详细]
  • php 垃圾回收 默认 打开,PHP垃圾回收机制详解
    PHP的基本GC概念PHP语言同其他语言一样,具有垃圾回收机制。那么今天我们要为大家讲解的内容就是关于PHP垃圾回收机制的相关问题。希望对大家有所帮助。PHPstrt ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 7.4 基本输入源
    一、文件流1.在spark-shell中创建文件流进入spark-shell创建文件流。另外打开一个终端窗口,启动进入spark-shell上面在spark-shell中执行的程序 ... [详细]
  • Qt开发,出现一个提示:conversionfrom‘QSqlTableModel*’tonon-scalartype‘QSqlTableModel’requested代码: ... [详细]
  • 透明木头问世!“木头大王”胡良兵再发顶刊,已成立公司加速落地69
    道翰天琼认知智能机器人平台API接口大脑为您揭秘。木材是人类最古老的建筑材料之一,也是一种绿色节能材料,我们对其外观的认知可谓根深蒂固。如今,随着透明木材的问世,这一观感将被颠覆。 ... [详细]
author-avatar
低调浪漫0613
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有