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


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

    近期工作时有用到 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
    • 2
    • 3
    • 4

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

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

    三、一点自己的零碎总结

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

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

  • 相关阅读:
    javascript【格式化时间日期】
    Debian Linux安装minikube&kubectl
    vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器
    Linux Shell编程
    redis 缓存雪崩 && 缓存击穿 && 缓存穿透
    【mq】从零开始实现 mq-01-生产者、消费者启动
    中国信息通信设备行业发展趋势及投资风险研究报告
    day54
    vue基础知识和原理(一)
    java计算机毕业设计ssm的会议管理系统(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/Jiweilai1/article/details/137664834