Spark sql知识点和执行流程图

不支持“variant”数据类型_西门子SCL编程入门教程连载(15)-Variant类型 西门子S7-1200/1500系列PLC提供Variant数据类型用于对数据进行引用,有着比ANY类型更强大的功能。今天这篇文章,我们就来聊聊Variant类型,并使用SCL语言编写一个简单的例程。本文包括如下几个主题:1、认识Variant类型;2、Variant与ANY类型的区别;3、Variant类型使用示例1、认识Variant类型Variant是西门子S7-1200/1500系列PLC支... 阅读详情

1.什么是Spark SQL

Spark SQL 是 Spark 用来处理结构化数据的一个模块,它提供了 2 个编程抽象:
DataFrame 和 DataSet,并且作为分布式 SQL 查询引擎的作用

执行流程在这里插入图片描述

2.Spark SQL 的特点

1)易整合
2)统一的数据访问方式
3)兼容 Hive
4)标准的数据连接

3.什么是DataFrame?

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

4.什么是DataSet?

1)是 Dataframe API 的一个扩展,是 Spark 最新的数据抽象。
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 对象和类对象之间的类比。

5.RDD 转换为 DateFrame

注意:如果需要 RDD 与 DF 或者 DS 之间操作,那么都需要引入 import spark.implicits._ 【spark 不是包名,而是 sparkSession 对象的名称】

6.DateFrame 转换为 RDD

直接调用 rdd ,将 DataFrame 转换为 RDD

7.RDD、DataFrame、DataSet三者的共性

1、RDD、DataFrame、Dataset 全都是 spark 平台下的分布式弹性数据集,为处理超大型数据提供便利
2、三者都有惰性机制,在进行创建、转换,如 map 方法时,不会立即执行,只有在遇到 Action
如 foreach 时,三者才会开始遍历运算。
3、三者都会根据 spark 的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出。
4、三者都有 partition 的概念
5、三者有许多共同的函数,如 filter,排序等
6、在对 DataFrame 和 Dataset 进行操作许多操作都需要这个包进行支持
import spark.implicits._
7、DataFrame 和 Dataset 均可使用模式匹配获取各个字段的值和类型

8.三者的区别

1.RDD:
1)RDD 一般和 spark mllib 同时使用
2)RDD 不支持 sparksql 操作
2.DataFrame:
1)与 RDD 和 Dataset 不同,DataFrame 每一行的类型固定为 Row,每一列的值没法直接访问,只有通过解析才能获取各个字段的值
2)DataFrame 与 Dataset 一般不与 spark mlib 同时使用
3)DataFrame 与 Dataset 均支持 sparksql 的操作,比如 select,groupby 之类,还能注册临时表/视窗,进行 sql 语句操作
4)DataFrame 与 Dataset 支持一些特别方便的保存方式,比如保存成 csv,可以带上表头,这样每一列的字段名一目了然
3.Dataset:
1)Dataset 和 DataFrame 拥有完全相同的成员函数,区别只是每一行的数据类型不同。
2)DataFrame 也可以叫 Dataset[Row],每一行的类型是 Row,不解析,每一行究竟有哪些字段,各个字段又是什么类型都无从得知,只能用上面提到的 getAS 方法或者共性中的第七条提到的模式匹配拿出特定字段。而 Dataset 中,每一行是什么类型是不一定的,在自定义了 case class 之后可以很自由的获得每一行的信息

9.用户自定义聚合函数

强类型的Dataset 和弱类型的DataFrame 都提供了相关的聚合函数,如 count(),countDistinct(), avg(),max(),min()。除此之外,用户可以设定自己的自定义聚合函数
1)弱类型用户自定义聚合函数:通过继承 UserDefinedAggregateFunction 来实现用户自定义聚合
函数
2)强类型用户自定义聚合函数:通过继承 Aggregator 来实现强类型自定义聚合函数

Spark SQL、Hive SQL运行流程解析及对比 SQL Query↓Parser(解析SQL)↓Unresolved Logical Plan(未解析逻辑计划)↓Analyzer(解析表和列名)↓Resolved Logical Plan(已解析逻辑计划)↓Optimizer(Catalyst 优化器)↓Optimized Logical Plan(优化逻辑计划)↓Physical Planner(物理计划生成)↓Selected Physical Plan(选择的物理计划)↓。 阅读详情

相关推荐

Spark简介及运行流程图文解说

初识Spark的朋友 ,下面是我汇总后的Spark总结和自己整合的一张流程图,希望可以帮助到你,也可以给我提出建议,一同进步1.认知Spark:Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表...

weixin_42163700的博客 3430

S7-1200 PLC的数据类型

今天就给大家介绍一下S7-1200 PLC的数据类型。除了基本数据类型之外,还支持一些复杂的数据类型,包括结构数据类型Struct、PLC数据类型UDT、数组Array、系统数据类型SDT、硬件数据类型DB_ANY、参数数据类型Variant、String和Char数据类型、WString和WChar数据类型、DTL数据类型等。就基本数据类型而言,S7-1200 PLC与S7-200/200 SMART PLC的也有不同,这篇文件中我们先介绍基本数据类型(复杂数据类型下一篇中介绍),基本数据类型包括位、字节

赵一舟的博客 1万+

Spark SQL 原理与代码实例讲解

Spark SQL作为Spark生态系统中的核心模块,在未来仍将持续发展和完善。性能优化:持续优化Spark SQL的查询执行性能,包括优化器、代码生成、内存管理等方面。云原生支持:加强对云原生环境(如Kubernetes)的支持,实现更好的资源管理和弹性伸缩。流批一体化:进一步融合流式处理和批处理,提供统一的API和运行时,简化应用程序开发。机器学习集成:加强与Spark MLlib的集成,提供更好的机器学习管道支持。数据湖管理:提供更好的数据湖管理功能,如数据治理、元数据管理和安全性。SQL标准支持。

AI天才研究院 1127

博图v15指令ret怎么用_博途中SCL编程问题中WORD_TO_BLOCK_DB

以下这个程序我在300PLC中可以使用WORD_TO_BLOCK_DB(#DB_NO).(#K):=?%IW(#J);但是我在1200PLC中却不能使用,为什么?提示函数WORD_TO_BLOCK_DB未定议最佳答案使用VARIANT_TO_DB_ANY指令可以使用“VARIANTtoDB_ANY”指令读取IN参数处的操作数,然后将其转化为数据类型DB_ANY。IN参数属于Var...

weixin_31851979的博客 2669

博途利用MOVE_BLK_VARIANT实现混合数据类型的块移动

MOVE_BLK_VARIANT可以将一个数据块的指定数据区域移动到另一个数据块的指定数据区域,前提是源区域和目标区域的数据类型相同。MOVE_BLK_VARIANT的实际应用意义在于,可以将不同类型的连续数据块一次性传输(不支持bool类型),这在PLC与网络设备的通信中会有用得到。

xulibo5828的博客 1万+

西门子S7-1200 SCL编程指令手册.pdf

西门子1200PLC SCL编程指令手册,详细介绍西直门1200和1500PLC的SCL编程指令

PLC1200配方功能使用---建立UDT步骤

PLC数据类型(UDT) 从TIA 博途 V11 开始,S7-1200 支持PLC数据类型(UDT)。 1、UDT类型是一种由多个不同数据类型元素组成的数据结构,元素可以是基本数据类型,也可以是STRUCT、数组等复杂数据类型以及其它UDT等。UDT类型嵌套UDT类型的深度限制为 8 级。 2、UDT类型可以在DB、OB/FC/FB接口区处使用。从...

ba_wang_mao的专栏 7478

DaVinci Configurator实战:从DBC导入到通信栈配置全解析

本文详细解析了如何使用Vector DaVinci Configurator工具,从导入行业标准DBC文件开始,高效完成AutoSAR通信栈(包括COM、PduR、CanIf等模块)的自动化与精细化配置。文章通过实战步骤,重点阐述了DBC导入、与EB MCAL协同、核心模块参数调整及诊断标定服务集成等关键环节,旨在帮助汽车电子工程师快速掌握这一核心工具,提升开发效率与准确性。

weixin_29159127的博客 592

spark学习之执行计划explain

本文主要介绍了spark的执行计划explain的使用方法,以及对逻辑执行计划和物理执行计划进行了说明,让大家更加了解spark的运行原理。

柳小葱的博客 7919

8.5/Q1,Charls最新高分文章解读!

8 257名受试者中,672人(8.14%)在9年内发生过卒中。在调整的多因素cox回归模型中,TyG和ABSI仍然是卒中的预测因素,TyG的HR为1.25(95%CI:1.06~1.47),ABSI的HR为1.33(95%CI:1.06~1.68)。TyG和ABSI联合诊断效能最高(AUC:0.579,95%CI:0.553~0.597),而TyG(AUC:0.566,95%CI:0.544~0.587)和ABSI(AUC:0.533,95%CI:0.524~0.597)的诊断效能最低。

gsky_sci的博客 1015

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

[Spark SQL] 主要执行流程

下图便是SparkSql整个解析成RDD的流程图,红色部分便是SparkSql优化器系统Catalyst,和大多数大数据SQL处理引擎设计基本相同(Impala、Presto、Hive(Calcite)等)。下面简述一下每个组成部分都做了什么,后续博客中会进行详解。 SqlParse sqlText先通过SparkSqlParser生成语法树。 Spark1版本使用的是scala原生...

UFO的博客 2256

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 731

hive sql 和 spark sql的区别

要知道两种sql的区别,先要知道什么是hive,什么是spark 一、什么是hive,什么是spark (一)hive 1、hive在hadoop中承担了多种角色,每种角色承担特定的功能。 定语 角色 作用 优点 基于Hadoop的数仓工具 查询引擎 可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转化为MapReduce任务进行运行 学习成本低,可以通过类sql语句执行统计,不必开发专门的MapReduce应用 建立于Hadoop上的数据仓库基础架

MDJ_D2T的博客 2万+

基于模糊神经网络实现水质评价预测 - Matlab源码

首先定义输入层、隐含层和输出层的节点数,并初始化权重和阈值,然后开始训练模型,在每轮训练中通过比较模型的输出值与实际值的误差来更新权重和阈值,直到误差达到最小值,为了提高模型的性能,我们可以采用交叉验证等技术进行优化。首先需要准备好数据集,使用的是嘉陵江的水质监测数据集,数据集包含了多个指标,如 pH 值、溶解氧、总氮、总磷等,以及相应的水质等级,我们需要将数据集分为训练集和测试集。在当今环境日益恶化的情况下,水质监测变得越来越重要,模糊神经网络作为一种新型的。

weixin_50547796的博客 147

YOLO11改进 | 卷积模块 | 轻量化GSConv替换普通的conv

yolo11,GSConv,卷积模块

kay_545 3958

Spark SQL与Hive SQL解析执行流程

Spark SQL与Hive SQL解析执行流程记录

承缘丶 1931

Google Earth Engine(GEE)——将sentinel - 2影像所有波段重采样到10m分辨率 (resample 和 projection的使用)

影像重投影是将一个影像从一个坐标系投影到另一个坐标系的过程。这通常涉及到将像素从一个平面坐标系变换到另一个平面坐标系。这可以用于许多应用中,例如建立数字高程模型(DEM)和地图制图。影像重投影通常需要进行数学计算,包括转换矩阵和插值算法,以确保像素值的准确性和精度。这次我们将对哨兵2好数据中20m分辨率的波段,重采样到10m分辨率中,然后同一参与计算。

此星光明博客 3108

Spark之SQL高级知识分享(任务提交优化+SparkSQL执行计划解析+Spark版本对比)

1.普通方式提交任务的缺点以及优化方法。 使用spark-shell/spark-submit脚本提交作业到yarn时: 2exector :花了一分钟时间 200executor :会花费更多更多的时间在向yarn申请资源 缺点一:耗费太多的时间用于申请资源上,尤其针对那些小任务(可能任务本身20秒完成) 缺点二:若因为数据倾斜导致部分task一值无法结束,那么即使那些完成任务的task的资源...

君永夜 1724

cartographer ceres后端优化

这里引用一篇文章作用一:用户可以选择使用Problem::AddParameterBlock显式添加参数块;在显式添加的时候ceres会内部进行额外的正确性检查。当Problem::AddParameterBlock()不存在时,Problem::AddResidualBlock()会隐式添加参数块,因此不需要显式调用Problem::AddParameterBlock()函数。ps:类似构造函数,显式构造函数。

南北粉面馆 802

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

spark sql 执行流程

本文我们通过源码,来介绍下spark sql的执行流程。   Spark sql是spark内部最核心,也是社区最活跃的组件。Spark SQL支持在Spark中执行SQL,或者HiveQL的关系查询表达式。列式存储的类RDD(DataSet/DataFrame)数据类型以及对sql语句的支持使它更容易上手,同时,它对数据的抽取、清洗的特性,使它广泛的用于etl,甚至是机器学习领域。因此,sapr...

purisuit_knowledge的专栏 610

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

spark sql读取hive底层_Spark-SQL、Hive on Spark、Spark on Hive

最近实践过程中引发了很多思考,其中Spark-SQL、Hive on Spark、Spark on Hive这三者的关系是其中非常有意思且容易混淆的的概念。相信很多刚接触spark的童鞋还没理解spark怎么回事的时候就看到这三个概念更是以一头雾水。特地单独拎出来以梳理清楚记录下来。其实其中关系非常简单,先来认识几个概念:1,Spark RDD计算引擎2,Spark SQL的SQL语法解析3,Hi...

weixin_39611072的博客 193

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spark执行流程与原理

  Spark执行计划分析: https://blog.youkuaiyun.com/zyzzxycj/article/details/82704713 ----------- 先贴一张sql解析的总流程图: 第一次看这图可能还不是很理解,先看一个简单sql: select * from heguozi.payinfo where pay = 0 limit 10 当这个sqlText,到...

Deegue 7781
上一篇: Spark提交流程
下一篇: Spark中实现二次排序
Poolweet_
博客等级 码龄7年 21粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值