---
title: （可选）叠加OmniOperator 算子加速
description: "通过OmniOperator算子加速特性提升算子执行效率，同时使用OmniShuffle Shuffle加速组件特性优化数据交互过程，实现端到端提升引擎查询性能。"
url: https://www.hikunpeng.com/document/detail/zh/omniruntime/omnishuffle/kunpengbds_omniruntime_20_0322.html
sourcePath: /source/zh/omniruntime/omnishuffle/kunpengbds_omniruntime_20_0322.html
indexId: 6e03071f4992cc7c1e4afb47b228bf8a2b9441e67847439d2d1b7ca06591eb0e70
---
# （可选）叠加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命令行窗口来执行。以下操作步骤中，“/opt/omni-operator/”为OmniOperator算子加速特性的安装目录，可根据实际情况修改。

1. 获取OmniShuffle Shuffle加速组件叠加OmniOperator算子加速特性软件包，以Spark3.3版本为例，软件包名称为BoostKit-omniShuffle-spark-3.3.1-1.9.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
```


  步骤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加速组件部署方式保持一致。

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日志信息
