更新时间:2025-07-11 GMT+08:00
分享

开启Spark Native算子优化

操作场景

Spark Native引擎是Apache Spark的一个核心组件,用于提高Spark SQL计算性而设计。通过使用向量化的C++加速库,实现对Spark算子性能加速。开启Spark Native引擎特性,可以提升Spark SQL的作业性能,减少CPU和内存的消耗。

队列开启Spark Native引擎特性后,当前支持Scan和Filter两种算子开启Spark Native。

  • Scan:Scan算子通常由查询语句触发,例如select * from test_table。
    仅以下条件的Scan算子支持开启Native:
    • Parquet格式的Hive表、Datasource表。
    • Orc格式Datasource表。
  • Filter:Filter算子通常由WHERE语句触发,例如:select * from test_table where id = xxx。

使用Explain语句可以查看SQL命令触发的算子类型,例如:Explain select * from test_table。

本节操作介绍开启Spark Native算子优化的操作方法。

约束限制

  • 弹性资源池队列开启Spark Native引擎特性需同时满足以下条件:
    • 弹性资源池规格:“标准版”。
    • 队列类型:“SQL队列”。
    • Spark引擎版本:Spark 3.3.1及以上版本
  • default队列当使用Spark 3.3.1及以上版本时,默认不开启Spark Native。
  • 支持作业级别关闭Spark Native特性,可以通过在SQL作业的参数设置中配置spark.gluten.enabled=false来实现作业级别关闭Spark Native。

开启Spark Native算子优化

  • 已经创建的弹性资源池中的SQL队列可以通过设置队列属性开启Spark Native:
    1. 在DLI管理控制台的左侧导航栏中,单击资源管理 > 队列管理
    2. 在对应队列的“操作”列,选择“更多 > 属性设置”。
    3. 进入队列属性设置页面,设置对应的属性值。属性值相关参数说明请参考表1

      已经创建的队列通过DLI管理控制台或API修改Spark Native开关需要重启队列才会生效。

      表1 队列属性

      属性名称

      说明

      配置样例

      DLI Spark Native加速

      开启Spark Native引擎特性,可以提升Spark SQL的作业性能,减少CPU和内存的消耗。

      开启

    4. 单击“确定”完成队列属性的设置。

关闭Spark Native算子优化

  • 设置弹性资源池中的SQL队列关闭Spark Native:
    1. 在DLI管理控制台的左侧导航栏中,单击资源管理 > 队列管理
    2. 在对应队列的“操作”列,选择“更多 > 属性设置”。
    3. 进入队列属性设置页面,设置对应的属性值。属性值相关参数说明请参考表2
      表2 队列属性

      属性名称

      说明

      配置样例

      DLI Native加速

      开启Spark Native引擎特性,可以提升Spark SQL的作业性能,减少CPU和内存的消耗。

      关闭

    4. 单击“确定”完成队列属性的设置。
  • 队列开启Spark Native时设置指定作业关闭Spark Native

    SQL队列开启Spark Native开关后,如需设置在队列上执行的某个作业不开启Spark Native,

    只需在SQL作业的参数设置中添加配置spark.gluten.enabled=false来关闭Spark Native。

相关文档