首页 > 数据库 >SparkSQL概述

SparkSQL概述

时间:2024-05-30 10:59:23浏览次数:25  
标签:DataFrame DataSet RDD API 概述 SparkSQL SQL Spark

为了给熟悉RDBMS(关系数据库管理系统)但又不理解MapReduce的技术人员提供快速上手的工具,hive应运而生,它是运行在Hadoop上的SQL-on-hadoop工具;
但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,运行效率低; 
spark sql则是采用内存存储可以减少大量的中间磁盘落地数据,相比hive速度能提高10到100倍.

SparkSQL简介

Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块.
与基本的 Spark RDD API 不同, Spark SQL 的抽象数据类型为 Spark 提供了关于数据结构和正在执行的计算的更多信息.
在内部, Spark SQL 使用这些额外的信息去做一些额外的优化.
有多种方式与 Spark SQL 进行交互, 比如: SQL 和 Dataset API. 当计算结果的时候, 使用的是相同的执行引擎, 不依赖你正在使用哪种 API 或者语言.
这种统一也就意味着开发者可以很容易在不同的 API 之间进行切换, 这些 API 提供了最自然的方式来表达给定的转换.
我们已经学习了 Hive,它是将 Hive SQL 转换成 MapReduce 然后提交到集群上执行,大大简化了编写 MapReduc 的程序的复杂性,
由于 MapReduce 这种计算模型执行效率比较慢, 所以 Spark SQL 的应运而生,它是将 Spark SQL 转换成 RDD,然后提交到集群执行,执行效率非常快!

Spark SQL 它提供了2个编程抽象, 类似 Spark Core 中的 RDD
1.DataFrame
2.DataSet

SparkSQL特点

1. Integrated(易整合)
无缝的整合了 SQL 查询和 Spark 编程.

在这里插入图片描述

2. Uniform Data Access(统一的数据访问方式)
使用相同的方式连接不同的数据源.

在这里插入图片描述

3. Hive Integration(集成 Hive)
在已有的仓库上直接运行 SQL 或者 HiveQL

在这里插入图片描述

4. Standard Connectivity(标准的连接方式)
通过 JDBC 或者 ODBC 来连接

在这里插入图片描述

DataFrame

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

在这里插入图片描述

上图直观地体现了DataFrame和RDD的区别。
左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构。
而右侧的DataFrame却提供了详细的结构信息,使得 Spark SQL 可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。
DataFrame是为数据提供了Schema的视图。可以把它当做数据库中的一张表来对待,
DataFrame也是懒执行的
性能上比 RDD要高,主要原因: 优化的执行计划:查询计划通过Spark catalyst optimiser进行优化。比如下面一个例子:

在这里插入图片描述

为了说明查询优化,我们来看上图展示的人口数据分析的示例。图中构造了两个DataFrame,将它们join之后又做了一次filter操作。
如果原封不动地执行这个执行计划,最终的执行效率是不高的。因为join是一个代价较大的操作,也可能会产生一个较大的数据集。
如果我们能将filter下推到 join下方,先对DataFrame进行过滤,再join过滤后的较小的结果集,便可以有效缩短执行时间。
而Spark SQL的查询优化器正是这样做的。简而言之,逻辑查询计划优化就是一个利用基于关系代数的等价变换,将高成本的操作替换为低成本操作的过程。

在这里插入图片描述

DataSet

1.是DataFrame API的一个扩展,是 SparkSQL 最新的数据抽象(1.6新增)。
2.用户友好的API风格,既具有类型安全检查也具有DataFrame的查询优化特性。
3.Dataset支持编解码器,当需要访问非堆上的数据时可以避免反序列化整个对象,提高了效率。
4.样例类被用来在DataSet中定义数据的结构信息,样例类中每个属性的名称直接映射到DataSet中的字段名称。
5.DataFrame是DataSet的特列,DataFrame=DataSet[Row] ,所以可以通过as方法将DataFrame转换为DataSet。Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息都用Row来表示。
6.DataSet是强类型的。比如可以有DataSet[Car],DataSet[Person].
7.DataFrame只是知道字段,但是不知道字段的类型,所以在执行这些操作的时候是没办法在编译的时候检查是否类型失败的,比如你可以对一个String进行减法操作,在执行的时候才报错,而DataSet不仅仅知道字段,而且知道字段类型,所以有更严格的错误检查。就跟JSON对象和类对象之间的类比。

标签:DataFrame,DataSet,RDD,API,概述,SparkSQL,SQL,Spark
From: https://blog.csdn.net/weixin_44872470/article/details/139314068

相关文章

  • Java 异常概述
    Java异常概述程序中的异常异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常指的并不是语法错误和逻辑错误。语法错误,则不会产生字节码文件,不能正常运行代码逻辑错误,则仅仅是不能得到想要的结果Java异常抛出机制​Java中把......
  • 多多运营的一个全面概述,怎么样才能多多开-团出-评助手
     多多运营,尤其是针对拼多多的运营,涉及多个方面和策略。以下是对多多运营的一个全面概述,包括关键策略和注意事项:一、平台定位与商业模式拼多多是一家以C2B拼团的第三方社交电商平台,核心理念是电商+社交。它允许任何人发起团购,动员身边的人购买,形成强大的社交裂变效应。拼多多......
  • 速通期末之计算机网络——1.计网概述
    计算机网络概述定义:将地理位置不同的独立的计算机,通过通信线路连接,实现资源共享组成:资源子网(提供资源)&&通信子网(提供网络节点和线路)类型:拓扑:星型,树形,总线型,环型,网状范围:局域网(LAN),城域网(MAN),广域网(WAN)传输方式:有线网络,无线网络体系结构:传输方式按传输方向:单工(只能单方向......
  • 没啥技术内容的解决问题概述
    初衷,希望爬过的坑大家不要再走一遍。尽量快速解决,花时间去做更主要的事情。初入行业时,最开始解决问题的思路是一个一个的验证和测试,那时候也没有人教,基本上是这样过来的。现在是要看什么问题,自己发现的可能就先看导致这个问题的原因有哪些,一个一个的分析和排除,并解决它。还有一......
  • Springboot概述
    随着互联网的兴起,Spring势如破竹地占据了Java领域轻量级开发的王者之位。随着Java语言的发展以及市场开发的需求,Spring推陈出新,推出了全新的SpringBoot框架。SpringBoot是Spring家族的一个子项目,其设计初衷是为了简化.Spring配置,从而让用户可以轻松构建独立运行的......
  • 动态规划--图论中使实用场景概述
    目录一 动态规划概述二 动态规划在图论中应用场景三c实例1.**最短路径问题(Dijkstra算法)**:2.**最小生成树问题(Kruskal算法)**:一 动态规划概述动态规划(DynamicProgramming,简称DP)是一种用于解决具有重叠子问题和最优子结构特性的问题的优化方法。动态规划通过将原......
  • 【C语言】自定义类型:联合与枚举的简明概述
    ......
  • 概述
    本项目结构以该项目为例AZCodingAccount/iGomokuGame:一个在线五子棋游戏(github.com),前端项目文件夹iSchool-Web、后端项目文件夹iSchool-Server,开发者需补充一切认为必要的开发文档在各自文件夹下的README文件中。项目总开发文档:AlbertZhang前端项目开发文档:qwq007后端......
  • 基于深度学习的入侵检测系统综述文献概述——AI科研之路
    1、研究方向的背景是什么?(1)互联网发展迅速,网络安全态势严重(2)现在的入侵检测准确率不够高,不能适应现在的需求2、前人做了哪方面的工作获得了什么成果?近代:将网络作为入侵来源之后发展(基于异常网络的检测技术):(1)基于数据挖掘与机器学习的入侵检测算法(2)基于深度学习的入侵检测......
  • Linux NVMEM子系统:概述以及RK3588 OTP实例
     NVMEM子系统为Non-Volatile类型存储提供统一内核处理框架。1NVMEM概述NVMEM子系统为eeprom,otp,efuse类型设备提供统一的访问接口。一般都基于regmap实现读写。NVMEM子系统初始化:nvmem_initbus_register--注册NVMEM总线nvmem_bus_type。2NVMEMAPI和数据结构2.1N......