---
title: 叠加OmniOperator 算子加速
description: "通过OmniOperator 算子加速特性提升算子执行效率，同时使用OmniShuffle Shuffle加速组件特性优化数据交互过程，实现端到端提升引擎查询性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0322.html
sourcePath: /source/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0322.html
indexId: d7d58918cbd0444017d3004a028cf41d2ec9872609b148ef9f1d90f44e177c5878
---
# 叠加OmniOperator 算子加速

通过OmniOperator 算子加速特性提升算子执行效率，同时使用OmniShuffle Shuffle加速组件特性优化数据交互过程，实现端到端提升引擎查询性能。

#### 前提条件

使用叠加特性之前请参考《Kunpeng BoostKit 24.0.RC5 大数据OmniRuntime特性指南(https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC5/bds/kunpengbds_omniruntime_20_0040.html)》完成OmniOperator算子加速特性安装。


#### 操作步骤

使用OmniShuffle Shuffle加速组件叠加OmniOperator 算子加速特性执行Spark引擎业务，需通过启动Spark-SQL命令行窗口来执行。

1. 获取OmniShuffle Shuffle加速组件叠加OmniOperator 算子加速软件包，以Spark3.3版本为例，软件包名称为BoostKit-omniShuffle-spark-3.3.1-1.7.0-aarch64.zip。将软件包上传至“/home/ockadmin”并解压获取ock-omniop-shuffle-manager-24.0.0-for-spark-3.3.jar文件，将解压后的jar文件移动至“${OCK_HOME}/jars”目录下。
2. 在“ock_spark.conf”中添加开启OmniOperator 算子加速的配置以及Shuffle manager配置，示例配置如下：

```
spark.shuffle.manager              org.apache.spark.shuffle.ock.OckColumnarShuffleManager
spark.shuffle.ock.mode rss  # RSS/ESS 可选
spark.sql.orc.columnarReaderBatchSize 10000
spark.memory.offHeap.enabled true
spark.memory.offHeap.size 28g
spark.driverEnv.LD_PRELOAD /opt/omni-operator/lib/libjemalloc.so.2
spark.executorEnv.LD_PRELOAD /opt/omni-operator/lib/libjemalloc.so.2
spark.executorEnv.OMNI_CONNECTED_ENGINE Spark
spark.executorEnv.OMNI_HOME /opt/omni-operator
spark.driverEnv.OMNI_HOME /opt/omni-operator
spark.executorEnv.LD_LIBRARY_PATH /opt/omni-operator/lib/:/usr/local/lib/HMPP:$LD_LIBRARY_PATH
spark.driverEnv.LD_LIBRARY_PATH /opt/omni-operator/lib/:/usr/local/lib/HMPP:$LD_LIBRARY_PATH
spark.sql.extensions com.huawei.boostkit.spark.ColumnarPlugin
spark.sql.join.columnar.preferShuffledHashJoin true
spark.sql.orc.impl native
```


3. 将SparkExtension插件启动命令添加至OmniOperator 算子加速依赖的jar路径，示例命令如下：

```
spark-sql --deploy-mode client --driver-cores 8 \
--driver-memory 40G \
--num-executors 24 \
--executor-cores 12 \
--executor-memory 25g \
--master yarn \
--conf spark.sql.codegen.wholeStage=false \
--jars /home/ockadmin/opt/ock/jars/* \
--jars /opt/omni-operator/lib/* \
--properties-file /home/ock_spark.conf \
--database tpcds_bin_partitioned_orc_3
```


4. 查看叠加特性是否成功。

  a. 执行TPC-DS SQL任务，观察到Spark History UI上的执行流程图中Shuffle算子被替换为OmniColumnarShuffleExchange，则表示使用OmniOperator 算子加速特性成功。
    图1 执行流程图

  b. 观察driver日志中出现Shuffle initialize success则表示使用OmniShuffle Shuffle加速组件成功。
    图2 driver日志信息


- “/opt/omni-operator/”为OmniOperator 算子加速的安装目录，可根据实际情况修改。
- 步骤  2
中添加的配置项具体作用请参考《  Kunpeng BoostKit 24.0.RC5 大数据OmniRuntime特性指南(https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC5/bds/kunpengbds_omniruntime_20_0040.html)
》。
- spark.shuffle.ock.mode 为Shuffle使用的模式，跟OmniShuffle Shuffle加速组件部署方式保持一致。
