仅在使用OmniOperator算子加速UDF功能的情况下,才需要执行Spark UDF业务,执行前需先执行Spark引擎业务。当前的OmniOperator算子加速UDF插件仅支持Simple UDF,若OmniOperator算子加速UDF不支持,会回退到原生Spark。
安装Spark UDF插件
- 请确认安装Spark UDF插件前已经按照安装SparkExtension完成Spark引擎的安装。
- 将UDF依赖的JAR放置到HDFS的“/user/hive-udf”目录下。
- “/user/hive-udf”目录用户可自行定义。
- UDF依赖的JAR需要用户自行提供。
- 在集群的管理节点注册Hive UDF。
注册方式参考Spark集成Hive UDF官方文档。
执行Spark UDF业务
执行步骤请参见执行Spark引擎业务,只需在SparkExtension的Spark-SQL命令行窗口启动命令基础上补充如下命令参数即可。
- 在spark.driver.extraClassPath参数后追加/opt/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar。
- Spark 3.1.1版本追加后结果如下。
| --conf spark.driver.extraClassPath=/opt/omni-operator/lib/boostkit-omniop-spark-3.1.1-1.7.0-aarch64.jar:/opt/omni-operator/lib/boostkit-omniop-bindings-1.7.0-aarch64.jar:/opt/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar:/opt/omni-operator/lib/dependencies/protobuf-java-3.15.8.jar:/opt/omni-operator/lib/dependencies/boostkit-omniop-native-reader-3.1.1-1.7.0.jar
|
- Spark 3.3.1版本追加后结果如下。
| --conf spark.driver.extraClassPath=/opt/omni-operator/lib/boostkit-omniop-spark-3.3.1-1.7.0-aarch64.jar:/opt/omni-operator/lib/boostkit-omniop-bindings-1.7.0-aarch64.jar:/opt/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar:/opt/omni-operator/lib/dependencies/protobuf-java-3.15.8.jar:/opt/omni-operator/lib/dependencies/boostkit-omniop-native-reader-3.3.1-1.7.0.jar
|
- 在spark.executor.extraClassPath参数后追加/opt/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar。
- Spark 3.1.1版本追加后结果如下。
| --conf spark.executor.extraClassPath='${PWD}/omni/omni-operator/lib/boostkit-omniop-spark-3.1.1-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/boostkit-omniop-bindings-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/dependencies/protobuf-java-3.15.8.jar':'${PWD}/omni/omni-operator/lib/dependencies/boostkit-omniop-native-reader-3.1.1-1.7.0.jar'
|
- Spark 3.3.1版本追加后结果如下。
| --conf spark.executor.extraClassPath='${PWD}/omni/omni-operator/lib/boostkit-omniop-spark-3.3.1-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/boostkit-omniop-bindings-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/boostkit-omniop-udf-1.7.0-aarch64.jar':'${PWD}/omni/omni-operator/lib/dependencies/protobuf-java-3.15.8.jar':'${PWD}/omni/omni-operator/lib/dependencies/boostkit-omniop-native-reader-3.3.1-1.7.0.jar'
|