开启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:
配置DLI Spark Native加速为开启。
具体操作请参考创建弹性资源池并添加队列。
- 已经创建的弹性资源池中的SQL队列可以通过设置队列属性开启Spark Native:
- 在DLI管理控制台的左侧导航栏中,单击 。
- 在对应队列的“操作”列,选择“更多 > 属性设置”。
- 进入队列属性设置页面,设置对应的属性值。属性值相关参数说明请参考表1。
已经创建的队列通过DLI管理控制台或API修改Spark Native开关需要重启队列才会生效。
- 单击“确定”完成队列属性的设置。
关闭Spark Native算子优化
- 设置弹性资源池中的SQL队列关闭Spark Native:
- 在DLI管理控制台的左侧导航栏中,单击 。
- 在对应队列的“操作”列,选择“更多 > 属性设置”。
- 进入队列属性设置页面,设置对应的属性值。属性值相关参数说明请参考表2
- 单击“确定”完成队列属性的设置。
- 队列开启Spark Native时设置指定作业关闭Spark Native:
SQL队列开启Spark Native开关后,如需设置在队列上执行的某个作业不开启Spark Native,
只需在SQL作业的参数设置中添加配置spark.gluten.enabled=false来关闭Spark Native。