【大数据面试题】024 Spark 3 升级了些什么?

本文介绍了Spark3升级后的两个关键优化:自适应查询执行,根据实时情况选择最佳计算方法;谓词下推,提前过滤数据减少数据量。这些改进显著提高了Spark任务运行速度并节省了资源。
摘要由CSDN通过智能技术生成

一步一个脚印,一天一道面试题

近期工作时有用到 Spark 2 升级 Spark 3,解决问题的情况。
任务原本是运行 4 小时后报错,升级到 Spark 3后,任务运行 1 小时,并且运行成功
平时用 Spark 3 用的也多,就当记录一下。

Spark 3 升级特点

一、自适应优化查询 Adaptive Query Execution

Spark 计算时,会根据不同的情况启用不同的方法。
比如在针对 join 操作时,默认使用 SortMergeJoin,而如果是大表 join 小表,则使用 BroadcastHashJoin 效果更好。
在 Spark 2 中,获取数据源等信息少,往往不能根据实际情况使用最好的计算方法。

Spark 3 中,能 动态获取执行信息,进而根据实际情况使用最好的计算方法,这会明显提升运行速度

二、谓词下推 Predicate PushDown

谓词下推是数据查询的重要优化。其重要原理是在一层层的处理中,把谓词下推到更低层,更早的做数据过滤,能明显提高程序执行效率。

谓词: Where 里的各种条件:大于 >,小于 <,等于 =,between 等过滤语句,就叫谓词
下推: 把对应谓词(各种过滤条件)放到更低的层级,提早过滤。

下面举例说明:
1.将谓词下推至数据源

select a.col1, b.col2 from a 
join b 
on a.id = b.id
where a.col1 = 'something'

1.如果是 Parquet 这样的列式存储文件格式,会直接在文件中过滤读入到 Spark 中,而不是先读入到 Spark,再过滤
2.先where过滤问题后,再进行join过滤,而不是先join,再where 过滤。

提早的进行过滤,减少数据量,就能提高程序的运行效率。
比如我们使用 Spark 数据量大时容易遇到 shuffle 时的报错,想想如果在 shuffle 前就能减少一部分数据量,是不是会好许多呢?

三、一点自己的零碎总结

1.用 Spark 3 就是会比 Spark 2 快很多,研究下来,就是 Spark 3 自动做的优化多了很多。
2.由于第一点,我们不会需要那么多加大资源才能解决的报错,节省了一些宝贵的集群资源
3.升级对更多使用 Spark SQL的程序来说,代码改动量很小。

我是近未来,祝你变得更强!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值