【SparkSQL】基础入门(重点:SparkSQL和Hive的异同、SparkSQL数据抽象)

news/2024/11/29 10:39:37/

【大家好,我是爱干饭的猿,本文重点介绍Spark SQL的定义、特点、发展历史、与hive的区别、数据抽象、SparkSession对象。

后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】

上一篇文章:《【Spark入门】基础入门》

1. SparkSQL

1.1 什么是SparkSQL

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据
限定: 结构化数据处理

1.2 为什么要学习SparkSQL

SparkSQL是非常成熟的 海量结构化数据处理框架

学习SparkSQL主要在2个点:

  • SparkSQL本身十分优秀, 支持SQL语言\性能强\可以自动优化\API简单\兼容HIVE等等
  • 企业大面积在使用SparkSQL处理业务数据
    • 离线开发
    • 数仓搭建
    • 科学计算
    • 数据分析

1.3 SparkSQL特点

1. 融合性

SQL可以无缝集成在代码中,随时用sQL处理数据

2. 统一数据访问

一套标准API可读写不同数据源

3. Hive兼容

可以使用SparkSQL直接计算并生成Hive数据表

4. 标准化连接

支持标准化JDBC\ODBC连接,方便和各种数据库进行数据交互

1.4 SparkSQL发展历史

在许多年前(2012\2013左右)Hive逐步火热起来, 大片抢占分布式SQL计算市场。

Spark作为通用计算框架, 也不可能放弃这一细分领域,于是, Spark官方模仿Hive推出了Shark框架(Spark 0.9版本) Shark框架是几乎100%模仿Hive, 内部的配置项\优化项等都是直接模仿而来。不同的在于将执行引擎由MapReduce更换为了Spark。

因为Shark框架太模仿Hive, Hive是针对MR优化, 很多地方和SparkCore(RDD)水土不服, 最终被放弃,Spark官方下决心开发一个自己的分布式SQL引擎 也就是诞生了现在的SparkSQL。

在这里插入图片描述
● 2014年 1.0正式发布
● 2015年 1.3 发布DataFrame数据结构, 沿用至今
● 2016年 1.6 发布Dataset数据结构(带泛型的DataFrame), 适用于支持泛型的语言(Java\Scala)
● 2016年 2.0 统一了Dataset 和 DataFrame, 以后只有Dataset了, Python用的DataFrame就是 没有泛型的Dataset
● 2019年 3.0 发布, 性能大幅度提升,SparkSQL变化不大

2. SparkSQL 概述

2.1 SparkSQL和Hive的异同在这里插入图片描述

Hive和Spark均是:“分布式SQL计算引擎”

均是构建大规模结构化数据计算的绝佳利器,同时SparkSQL拥有更好的性能。

目前,企业中使用Hive仍旧居多,但SparkSQL将会在很近的未来替代Hive成为分布式SQL计算市场的顶级

2.2 SparkSQL的数据抽象

在这里插入图片描述
在这里插入图片描述

2.3 SparkSQL数据抽象的发展

从SparkSQL的发展历史可以看到:
• 14年最早的数据抽象是:SchemaRDD(内部存储二维表数据结构的RDD),SchemaRDD就是魔改的RDD,将RDD支持的存储数据,限定
为二维表数据结构用以支持SQL查询。由于是魔改RDD,只是一个过渡产品,现已废弃。
• 15年发布DataFrame对象,基于Pandas的DataFrame(模仿)独立于RDD进行实现,将数据以二维表结构进行存储并支持分布式运行
• 16年发布DataSet对象,在DataFrame之上添加了泛型的支持,用以更好的支持Java和Scala这两个支持泛型的编程语言
• 16年,Spark2.0版本,将DataFrame和DataSet进行合并。其底层均是DataSet对象,但在Python和R语言到用时,显示为DataFrame对象
。和老的DataFrame对象没有区别

2.4 DataFrame数据抽象

在这里插入图片描述
DataFrame和RDD都是:弹性的、分布式的、数据集
只是,DataFrame存储的数据结构“限定”为:二维表结构化数
据,而RDD可以存储的数据则没有任何限制,想处理什么就处理什么
在这里插入图片描述
所以DataFram更适合sql处理

2.5 SparkSession对象

在RDD阶段,程序的执行入口对象是: SparkContext
在Spark 2.0后,推出了SparkSession对象,作为Spark编码的统一入口对象。
SparkSession对象可以:

  • 用于SparkSQL编程作为入口对象
  • 用于SparkCore编程,可以通过SparkSession对象中获取到SparkContext
    所以,我们后续的代码,执行环境入口对象,统一变更为SparkSession对象

在这里插入图片描述
代码演示:

# coding:utf8# SparkSession对象的导包,对象是来自于pyspark.sql包中
from pyspark.sql import SparkSessionif __name__ == '__main__':# 构建SparkSession执行环境入口对象spark = SparkSession.builder.\appName("test").\master("local[*]").\getOrCreate()# 通过SparkSession对象获取SparkContext对象sc = spark.sparkContext# SparkSOL的HelloWorlddf = spark.read.csv("../xian_rent/rent.csv", sep=',', header=True)# 展示表结构df.printSchema()# 注册成零时表,可以通过sql使用df.createTempView("rent_data")# 1. SQL 风格spark.sql("""select * from rent_data where price >= 8000 limit 5""").show()# 2. DSL 风格df.where("price >= 8000").limit(5).show()

http://www.ppmy.cn/news/1249219.html

相关文章

GEE 23:基于GEE实现物种分布模型之随机森林法

基于GEE实现物种分布模型之随机森林法 1.物种分布数据2.研究区绘制3.预测因子选择 1.物种分布数据 根据研究目的和需要导入物种数据: // Load presence data var Data ee.FeatureCollection("users/************736/Distribution"); print(Original da…

在虚拟机搭建nignx,和使用本地访问nginx的情况

下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下,在 /etc/nginx/nginx.conf,编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…

PTApt——2023年软件设计综合实践_7(数据结构)

6-1 递增的整数序列链表的插入 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。 答案: 语言选C(gcc) List Insert(List L, ElementType X) {List tmp (List) mal…

[个人笔记] VMware vCenter的CLI笔录

VMware虚拟化 - CLI笔录 VMware vCenter的CLI笔录 VMware虚拟化 - CLI笔录VMware vCenter的CLI笔录vCenter 6.7 Shell service-control服务管理的CLIvCenter 6.7 上传文件到ShellvCenter 6.7 Shell iptables防火墙管理vCenter 6.7 Shell 替换计算机SSL证书全流程other cli VMwa…

竞赛选题 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正

文章目录 0 简介1 思路简介1.1 车牌定位1.2 畸变校正 2 代码实现2.1 车牌定位2.1.1 通过颜色特征选定可疑区域2.1.2 寻找车牌外围轮廓2.1.3 车牌区域定位 2.2 畸变校正2.2.1 畸变后车牌顶点定位2.2.2 校正 7 最后 0 简介 🔥 优质竞赛项目系列,今天要分享…

男UI设计师主要是做什么的优漫教育

1、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计;   2、对页面进行优化,使用户操作更趋于人性化;   3、维护现有的应用产品;   4、收集和分析用户对于GUI的需求。   二、需要学什么…

强基固本,红海云数字化重塑提升国企干部管理能力

国有企业的干部管理体系建设具有重要的战略意义,对于构建高素质专业化的干部队伍,推动企业高质量发展至关重要。特别是在党的二十大以后,建设中国特色现代企业制度,在完善公司治理中加强党的领导,加强党管干部党管人才…

Javaweb之Vue组件库Element案例的详细解析

4.4 案例 4.4.1 案例需求 参考 资料/页面原型/tlias智能学习辅助系统/首页.html 文件,浏览器打开,点击页面中的左侧栏的员工管理,如下所示: 需求说明: 制作类似格式的页面 即上面是标题,左侧栏是导航&…