---
title: 安装UDF翻译工具
description: "1. 从表3中获取UDF翻译工具的RPM包，将RPM包上传至物理机的“/opt”目录。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0919.html
sourcePath: /source/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0919.html
indexId: fc9500b31c6e06a39523b0bf37686b018eef3682b174871910a99dcb6958ca0378
---
# 安装UDF翻译工具

#### 安装UDF翻译工具RPM包

1. 从表3中获取UDF翻译工具的RPM包，将RPM包上传至物理机的“/opt”目录。
2. 在容器flink_jm_8c32g中安装该RPM包，安装路径默认为“/opt”。

```
rpm -ivh UNT-1.0-35.noarch.rpm
```


  命令执行完成后会自动创建“/opt/udf-trans-opt”目录。

  如果没有创建“/opt/udf-trans-opt”目录，请执行以下命令手动创建。 mkdir /opt/udf-trans-opt

3. 将安装OmniStream中安装后的基础库目录复制到“/opt/udf-trans-opt”。

```
docker cp /usr/local/OmniStream/libbasictypes flink_jm_8c32g:/opt/udf-trans-opt
```


#### 安装UDF依赖

1. 可选：在物理机上传并解压KACC_JSON。
  从表3中获取BoostKit-kaccjson_1.1.0.zip，上传该压缩包至物理机的“/opt”目录，并解压。 1 2 cd /opt/ unzip BoostKit-kaccjson_1.1.0.zip

2. 将KACC_JSON头文件和静态库复制到flink_jm_8c32g容器中的UDF翻译工具路径“/opt/udf-trans-opt/libbasictypes”。
  1 2 3 4 5 docker exec flink_jm_8c32g mkdir -p /opt/udf-trans-opt/libbasictypes/include docker exec flink_jm_8c32g mkdir -p /opt/udf-trans-opt/libbasictypes/lib docker cp include/kacc_json flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/ docker cp include/kacc_gson_shell flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/ docker cp libkaccgson.a flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/lib/

3. 可选：下载KSL并解压安装。

  a. 从    表3
获取BoostKit-ksl_2.5.1.zip，上传该压缩包至物理机的“/opt”目录，解压并复制RPM包到flink_jm_8c32g容器中。
    1 2 3 cd /opt unzip BoostKit-ksl_2.5.1.zip docker cp boostkit-ksl-2.5.1-1.aarch64.rpm flink_jm_8c32g:/opt/udf-trans-opt/

  b. 进入flink_jm_8c32g容器并安装KSL的RPM包。
    1 2 3 docker exec -it flink_jm_8c32g bash cd /opt/udf-trans-opt/ rpm -ivh boostkit-ksl-2.5.1-1.aarch64.rpm

4. 在物理机安装OmniStream依赖头文件。

  a. 将从    表3
中获取的depend.zip安装包解压到“/usr/local/OmniStream/depend”目录下。

```
mkdir -p /usr/local/OmniStream/depend/
unzip depend.zip -d /usr/local/OmniStream/depend/
docker cp /usr/local/OmniStream/libbasictypes/OmniStream flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
docker cp /usr/local/OmniStream/libbasictypes/include/core flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
docker cp /usr/local/OmniStream/libbasictypes/include/runtime flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
docker cp /usr/local/OmniStream/libbasictypes/include/streaming flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
docker cp /usr/local/OmniStream/libbasictypes/include/table flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
docker cp /usr/local/OmniStream/libbasictypes/include/third_party flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
```


  b. 安装jemalloc。

    1. 下载      jemalloc-5.3.0.tar.gz(https://github.com/jemalloc/jemalloc/archive/refs/tags/5.3.0.tar.gz)
，并上传到管理节点。
      1 2 3 cd /opt/omni-operator/ tar zxvf jemalloc-5.3.0.tar.gz mv jemalloc-5.3.0 jemalloc

      “/opt/omni-operator/jemalloc”目录用户可自行定义。

    2. 进入“jemalloc”目录，运行脚本并安装。
      1 2 3 cd jemalloc ./autogen.sh --disable-initial-exec-tls make -j2

    3. 复制“/opt/omni-operator/jemalloc/lib/libjemalloc.so.2”到“/opt/omni-operator/lib”目录下。
      1 cp /opt/omni-operator/jemalloc/lib/libjemalloc.so.2 /opt/omni-operator/lib/

  c. 复制jemalloc.h到容器UDF工具的头文件引用目录中。

```
docker cp /opt/omni-operator/jemalloc/include/jemalloc/jemalloc.h flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
```


  d. 下载OmniOperator，将OmniOperator源码全部复制到容器UDF工具的头文件引用目录中。

```
cd /usr/local/OmniStream/depend/
git clone https://atomgit.com/openeuler/OmniOperator.git -b operator_flink_1107
mv OmniOperator OmniOperatorJIT
docker cp /usr/local/OmniStream/depend/OmniOperatorJIT flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
```


  e. 下载xxHash，将xxHash.h复制到UDF工具的头文件引用目录中。

```
cd /usr/local/OmniStream/depend/
git clone https://github.com/Cyan4973/xxHash.git
cd xxHash && git checkout tags/v0.8.2
docker cp /usr/local/OmniStream/depend/xxhash.h flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
```


  f. 下载Nlohmann json，将本地代码中的include/nlohmann目录复制到容器UDF工具的头文件引用目录中。

```
cd /usr/local/OmniStream/depend/
git clone https://github.com/nlohmann/json.git -b v3.11.3
docker cp /usr/local/OmniStream/depend/nlohmann/include/nlomann flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/
```


5. 安装libboundscheck头文件“/opt/udf-trans-opt/libbasictypes”。

  a. 进入flink_jm_8c32g容器创建目录“/opt/udf-trans-opt/libbasictypes/include/libboundscheck”并退出容器。
    1 2 3 docker exec -it flink_jm_8c32g bash mkdir -p /opt/udf-trans-opt/libbasictypes/include/libboundscheck/ exit

  b. 将    安装OmniStream
步骤中安装后的include复制到flink_jm_8c32g容器的“/opt/udf-trans-opt/libbasictypes/include/libboundscheck”目录。
    1 docker cp /usr/local/OmniStream/include flink_jm_8c32g:/opt/udf-trans-opt/libbasictypes/include/libboundscheck
