扩展_Catalyst 优化器_SparkSQL 和 RDD 的区别 | 学习笔记

简介: 快速学习扩展_Catalyst 优化器_SparkSQL 和 RDD 的区别

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:扩展_Catalyst 优化器_SparkSQL 和 RDD 的区别】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12039


扩展_Catalyst 优化器_SparkSQL 和 RDD 的区别

 

前面说过的代码执行效率比 RDD 要高,spark SQL 是基于 RDD 而立,并且基于 RDD 之上,又做了那么多的工作,支持结构化,为什么比 RDD 的执行效率还高?

这不科学,通过这小节介绍一下这个 catalyst 优化器,做一个小的扩展,相信通过这个 catalyst 优化器,大家对 spark 系统高有一些深刻的认识了,同时,也能理解,spark SQL 当中最精髓、最精华的一个部分。

最精华的部分,就是 catalyst,介绍 catalyst 优化器的时候,应该先去说一说 RDD 和 sparks SQL 运行时的区别。

 

RDD 和 sparks SQL 的区别

1、RDD 的运行流程

image.png

(1)大致运行步骤

先将 RDD 解析为由 Stage 组成的 DAG,后将 Stage 转为 Task 直接运行。

如果要做一些优化,比如说,在进行一系列的这个操作,比如说 RDD.a,RDD.b,RDD.c,在这些操作之前,最后来一个 Filter,Filter 移到前面,移到这个位置去运行,效率比刚才的情况要稍微高一点。

因为 filter 这种东西过滤过了以后,整个数据集就小了,在进行 B 和 C 的操作的时候,相对来说速度就会更快。

(2)问题

任务会按照代码所示运行,依赖开发者的优化,开发者的会在很大程度上影响运行效率

(3)解决办法

创建一个组件,帮助开发者修改和优化代码,但是这在 RDD 上是无法实现的

为什么 RDD 无法自我优化?

l RDD 没有 Schema 信息

l RDD 可以同时处理结构化和非结构化的数据

这种优化方式叫做谓词上推,像这种优化方式,在 RDD 当中,除了手动去做,系统不能帮你做这个 RDD,不能帮你做这样的操作,谓词上推,有可能会推错,要进行谓词上推这种优化的话,谓词上推明显是一个非常常见的一个优化,在做这种优化的时候,先有结构化的结构信息,有这个数据集的结构信息,才能够非常稳当对其来进行优化,但是 RDD 有,所以 RDD 不好做这些优化。

2、sparks SQL

(1)sparks SQL 提供了什么?

image.png

和 RDD 不同,SparkSQL 的 Dataset 和 SQL 并不是直接生成计划交给集群执行,而是经过了 Catalyst 优化器,这个优化器能够自动帮助开发者优化代码。

也就是说,在 SparksQL 中,开发者的代码即使不够优化,也会被优化为相对较好的形式去执行。

(2)为什么 SparksQL 提供了这种能力?

首先, SparksQL 大部分情况用于处理结构化数据和半结构化数据,所以 SparkSQL 可以数据 schema 来进行优化。

相关文章
|
SQL 分布式计算 Java
扩展_Catalyst 优化器_优化过程 | 学习笔记
快速学习扩展_Catalyst 优化器_优化过程
187 0
扩展_Catalyst 优化器_优化过程 | 学习笔记
|
SQL 大数据 开发者
扩展_Catalyst 优化器_查看计划 | 学习笔记
快速学习扩展_Catalyst 优化器_查看计划
扩展_Catalyst 优化器_查看计划 | 学习笔记
|
7月前
|
达摩院 开发者 容器
「达摩院MindOpt」优化形状切割问题(MILP)
在制造业,高效地利用材料不仅是节约成本的重要环节,也是可持续发展的关键因素。无论是在金属加工、家具制造还是纺织品生产中,原材料的有效利用都直接影响了整体效率和环境影响。
「达摩院MindOpt」优化形状切割问题(MILP)
|
7月前
|
人工智能 自然语言处理 达摩院
MindOpt 云上建模求解平台:多求解器协同优化
数学规划是一种数学优化方法,主要是寻找变量的取值在特定的约束情况下,使我们的决策目标得到一个最大或者最小值的决策。
|
2月前
|
机器学习/深度学习 算法 数据可视化
如果你的PyTorch优化器效果欠佳,试试这4种深度学习中的高级优化技术吧
在深度学习领域,优化器的选择对模型性能至关重要。尽管PyTorch中的标准优化器如SGD、Adam和AdamW被广泛应用,但在某些复杂优化问题中,这些方法未必是最优选择。本文介绍了四种高级优化技术:序列最小二乘规划(SLSQP)、粒子群优化(PSO)、协方差矩阵自适应进化策略(CMA-ES)和模拟退火(SA)。这些方法具备无梯度优化、仅需前向传播及全局优化能力等优点,尤其适合非可微操作和参数数量较少的情况。通过实验对比发现,对于特定问题,非传统优化方法可能比标准梯度下降算法表现更好。文章详细描述了这些优化技术的实现过程及结果分析,并提出了未来的研究方向。
33 1
|
5月前
|
人工智能 算法 调度
优化问题之如何选择合适的优化求解器
优化问题之如何选择合适的优化求解器
|
5月前
|
调度 决策智能
优化问题之优化求解器有哪些主要的评估特性
优化问题之优化求解器有哪些主要的评估特性
|
达摩院 调度
使用达摩院MindOpt优化交通调度_最大化通行量—线性规划问题
在数学规划中,网络流问题是指一类基于网络模型的流量分配问题。网络流问题的目标是在网络中分配资源,使得网络的流量满足一定的限制条件,并且使得某些目标函数最小或最大化。网络流问题通常涉及一个有向图,图中每个节点表示一个资源,每条边表示资源之间的关系。边上有一个容量值,表示该边上最多可以流动的资源数量。流量从源节点开始流出,经过一系列中间节点,最终到达汇节点。在这个过程中,需要遵守一定的流量守恒和容量限制条件。
|
7月前
|
存储 达摩院 调度
「达摩院MindOpt」优化FlowShop流水线作业排班问题
在企业在面临大量多样化的生产任务时,如何合理地安排流水线作业以提高生产效率及确保交货期成为了一个重要的问题。
「达摩院MindOpt」优化FlowShop流水线作业排班问题