Spark SQL - 简介

news2024/11/24 3:24:33

目录

1. 概念介绍

2. Spark SQL与Hive的区别

3. 数据结构分类

4. 特点

4.1 易整合

4.2 统一的数据访问方式

4.3 兼容hive

4.4 提供标准的数据连接

5 Spark的数据模型介绍


1. 概念介绍

sparkSQl是spark专门针对结构化数据(DataFrame和DataSets)处理的一个组件,可以快速简单的处理结构化数据,他可以加载结构化数据,将其映射成表,利用SQL进行数据处理

sparkSQL 其实是对spark-core处理结构化数据的底层原理进行了封装
底层的物理执行计划还是spark-core的执行过程

2. Spark SQL与Hive的区别

hive是单独的一个组件,他的执行过程是:

提交SQL --> 语法解析校验 --> 生成逻辑执行计划 --> 绑定元数据 --> 优化逻辑代码 --> 生成物理执行计划(MR)

  • Shark

    • 运行的模式是hive on spark

    • 会将hivesql转换为spark的rdd

    • shark是基于hive开的,维护麻烦,2015年停止维护

  • sparkSQL

    • 是spark团建独立开发的工具,2014年发布1.0版本

    • sparkSQL工具对spark的兼容性更好,优化性能得到提升

    • sparkSQL本质也是将sql语句转化为rdd执行,catalyst引擎负责将sql转化为rdd

    • sparkSQL可以连接使用hive的metastore服务,管理表的元数据

3. 数据结构分类

  • 结构数据(DataFrame)

    • 就是表结构数据,有行列组成,并且描述了数据的属性(字段)和类型,表信息

    • String int

  • 半结构化数据 spark中可以通过方法将半结构化数据转化为结构化数据(DataFrame)

    • xml和json

    • 描述数据的存储结构,但是无法描述数据的类型

<name>zhansan</name>
<age>18</age>
{
name:zhangsan
}
  • 非结构化数据 rdd可以处理

    • 文本,图片,视频

4. 特点

4.1 易整合

sparkSQL 可以在spark的编程中,将SQL和算子进混合使用,使编程更加的灵活

val res = spark.sql("select * from tb_user")
res.map()

4.2 统一的数据访问方式

sparkSQL为各种不同类型的数据源提供统一的访问方式,可以跨各类数据源进行join,支持的数据源如:csv,tcv(tab键作为分隔符),hive,Avro,Parquet,orc(列式存储文件格式,本身就是有结构的),json,jdbc

  • 使用read方法可以读取hdfs数据,mysql数据,不同类型的文件数据(json,csv,orc)

  • 使用write方法可以写入hdfs,mysql不同类型的文件

4.3 兼容hive

sparkSQL支持hiveSQL语法以及hive的SerDes,UDFs,并且允许访问已经存在的hive数仓数据

4.4 提供标准的数据连接

sparkSQL的server模式,可以为各类bi工具提供标准的JDBC、ODBC连接

 SparkSQL可以看做一个转换层,向下对接各种不同的结构化数据源,向上提供不同的数据访问方式

5 Spark的数据模型介绍

spark封装一个基础数据模型(数据类型)rdd

然后根据rdd进行再次封装,得到新的数据类型 dataframe

然后根据dataframe再次封装得到了dataset类型

 

  • rdd 弹性分布式集合 使用python,java,scala,c,R.

[1,zhangsan,20,2,lisi,22]
  • Dataframe 类型 结构化数据 行列,表信息(数据的属性(字段)和类型) 使用python,java,scala,c,R

    • row类 行数据 rdd中一个列表元素

    • schema类 表信息

[
row1=[1,zhangsan,20],
row2=[1,lisi,22]
]
schema
{
id:int,
name:string,
age:int
}
  • datasets类型 结构化数据 java,scala

    • row类 一行数据 一个dataframe

    • schema类 表信息

    • 从dataset中取出一行数据可以当作dataframe类型操作

[
row1=[1,zhangsan,20],
row2=[1,lisi,22]
]
schema
{
id:int,
name:string,
age:int
}

row1 可以当做dataframe进行操作

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1633054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg常用结构体、关键函数、ffplay.c分析

一、常用结构体&#xff1a; 1、AVFormatContext结构体&#xff1a; AVFormatContext是一个贯穿全局的数据结构&#xff0c;很多函数都要用它作为参数。FFmpeg代码中对这个数据结构的注释是format I/O context&#xff0c;此结构包含了一个视频流的格式内容。其中存有AVIputFor…

YOLO新鲜腐烂水果检测数据集:8类,11000多张图像,标注完整

YOLO新鲜腐烂水果检测数据集&#xff1a;8类&#xff0c;11000多张图像&#xff0c;yolo标注完整&#xff0c;包含烂苹果&#xff0c;烂香蕉&#xff0c;烂橙子&#xff0c;烂石榴&#xff0c;好苹果&#xff0c;好香蕉&#xff0c;好橙子&#xff0c;好石榴8个类别 图像统一分…

2024年4月28日

2024年4月28日08:14:11 utf8和utf8mb4的区别 CRATE DATABSE USE DATABASE DROP DATABASE 2024年4月28日08:34:56 主线和支线/理论和实践 DECIMAL(P&#xff0c;D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。 2024年4月28日08:36:02 如何去欣赏一…

NFS服务器(linux-linux)

目录 简介 NFS背景介绍 生产应用场景 NFS工作原理 示例图 流程 NFS的使用 安装 配置文件 主配置文件分析 实验1 NFS账户映射 实验2&#xff1a; 实验3 autofs自动挂载服务 产生原因 安装 配置文件分析 实验4 实验5 简介 NFS背景介绍 NFS是一种古老的用于…

Xinstall助力手游推广,打破传统营销方式

随着移动互联网的普及&#xff0c;手游市场日益繁荣&#xff0c;手游推广方式也日新月异。在这个竞争激烈的市场中&#xff0c;如何有效地推广手游&#xff0c;吸引更多的用户&#xff0c;成为了开发者和广告主关注的焦点。而Xinstall作为国内专业的App全渠道统计服务商&#x…

这份详细的智慧校园建设方案,赶紧收藏

高等教育信息化是促进高等教育改革创新和提高质量的有效途径&#xff0c;是教育信息化发展的创新前沿。进一步加强基础设施和信息资源建设&#xff0c;重点推进信息技术与高等教育的深度融合&#xff0c;能促进教育内容、教学手段和方法现代化&#xff0c;创新人才培养、科研组…

C语言进阶|链表经典OJ题

✈移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 方法一&#xff1a; 遍历链表找到所有等于val的节点&#xff0c;再执行删除操作删除这些节点。 方法二&#xff1a; …

小程序中如何绑定会员个人信息

在小程序中&#xff0c;用户可以在个人中心页面来设置用户名、头像、手机号码和身份证号码等个人信息。以下是具体的操作步骤&#xff1a; 1. 进入个人中心->账户设置。在个人中心页面&#xff0c;点击设置按钮&#xff0c;即可进入账户设置页面。在这个页面进行账号信息设…

百万人都在求的网络安全学习路线,渗透漏洞防御总结(附图)

前言 不折腾的网络安全&#xff0c;和咸鱼有什么区别 目录 二、 前言三 、同源策略 3.1 什么是同源策略 3.2 为什么需要同源策略四 、XSS 4.1 概览 4.2 介绍 4.3 防御五 、CSRF 5.1 概览 5.2 介绍 5.3 防御六、 SQL 注入七 、流量劫持 7.1 DNS 劫持 7.2 HTTP 劫持…

某知乎APP - X-Zse-96

⚠️前言⚠️ 本文仅用于学术交流。 学习探讨逆向知识&#xff0c;欢迎私信共享学习心得。 如有侵权&#xff0c;联系博主删除。 请勿商用&#xff0c;否则后果自负。 接口网址 app 版本: 8.10.0 aHR0cHM6Ly93d3cuemhpaHUuY29tL2FwaS92NC9zZWFyY2hfdjM 加密位置分析 > …

MySQL从入门到高级 --- 3.DML基本操作

文章目录 第三章&#xff1a;3.基本操作 - DML3.1 数据插入3.2 数据修改3.3 数据删除3.4 练习 第三章&#xff1a; 3.基本操作 - DML DML&#xff1a;数据操作语言&#xff0c;用来对数据中表的数据记录进行更新 关键字&#xff1a; insert 插入 delete 删除 update 更新 …

CLIP是啥?

论文地址&#xff1a;https://arxiv.org/pdf/2103.00020v1 代码地址&#xff1a;GitHub - openai/CLIP: CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image 题目解读 Transferable Visual model指不使用特定数据集的数…

【代码随想录刷题记录】LeetCode844比较含退格的字符

题目地址 1. 思路 1.1 基本思路 拿到这个题&#xff0c;我们要单独写一个函数去将退格后的字符串结果返回出来&#xff08;生成退格后的真实的字符串&#xff09;&#xff0c;我还是想魔改 O ( n ) O(n) O(n)时间复杂度的删除数组元素的算法&#xff1a;【代码随想录刷题记录…

认识Linux及一些基本

目录 linux简介&#xff1a; 1. 发展史 UNIX发展的历史 Linux发展历史 2. 开源 3. 企业应用现状 Linux在服务器领域的发展 Linux在桌面领域的发展 Linux在移动嵌入式领域的发展 Linux在云计算/大数据领域的发展 4. 发行版本 Debian Ubuntu 红帽企业级Linux Cent…

LLDP简介

LLDP简介 定义 LLDP&#xff08;Link Layer Discovery Protocol&#xff09;是IEEE 802.1ab中定义的链路层发现协议。LLDP是一种标准的二层发现方式&#xff0c;可以将本端设备的管理地址、设备标识、接口标识等信息组织起来&#xff0c;并发布给自己的邻居设备&#xff0c;邻…

国产Sora诞生!清华团队发布Vidu大模型,可直接生成16秒视频

大模型之争已从单模态转向多模态。 4月27日&#xff0c;在2024中关村论坛年会未来人工智能先锋论坛上&#xff0c;清华大学联合北京生数科技有限公司正式发布了文生视频大模型——Vidu。 在会议上&#xff0c;清华大学人工智能研究院副院长、生数科技首席科学家朱军对外展示了…

溪谷软件:游戏联运有多简单?

游戏联运&#xff0c;即游戏联合运营&#xff0c;是一种游戏运营模式&#xff0c;涉及到多个平台或公司共同推广和运营同一款游戏。对于开发者而言&#xff0c;游戏联运的简化程度可能因具体情况而异&#xff0c;但以下是一些因素&#xff0c;使得游戏联运在某种程度上变得更加…

​水滴式饲料粉碎机:创新设计与卓越性能的完美结合

水滴式饲料粉碎机是一种新型的饲料加工设备&#xff0c;其新颖的设计理念和工作性能受到了广大养殖户和饲料生产厂家的青睐。水滴式饲料粉碎机之所以受到如此广泛的关注&#xff0c;不仅是因为其G效、节能的特点&#xff0c;更是因为其新颖的结构设计&#xff0c;使得饲料加工过…

Cesium.js(3):Cesium查看器、场景、实体、数据源介绍

1 Cesium的四大类说明 1.1 Viewer查看器类 Viewer是cesium的查看器类&#xff0c;第一个参数是地图主窗口DIV的容器ID&#xff0c;第二个参数option是Viewer的可选设置参数&#xff0c;包含图层、地形时间系统等参数&#xff0c;种类多样&#xff0c;主要作用是对视口中各个组…

【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码

文章目录 一、游戏运行效果二、代码实现2.1 项目搭建2.2 加载我方坦克2.3 加载敌方坦克2.4 添加爆炸效果2.5 坦克大战之音效处理 三、完整代码 一、游戏运行效果 二、代码实现 坦克大战游戏 2.1 项目搭建 本游戏主要分为两个对象&#xff0c;分别是我方坦克和敌方坦克。用户可…