前言
离线数仓之前的主力工具是hive,有一些处理需要写udf实现,当hive sql迁移成spark sql时。之前的udf函数该怎么办呢,本文为自测并总结。
结果写在前面,hive jar包可以直接复用,不用重新编写。
环境: spark2.11,hive2.3.6,hadoop2.7.2
解决方案
首先,hive的元数据一般生产我们都会存在mysql当时,所以设想:spark on hive也是使用hive的元数据,可以看到hive的表,那如果将hive的udf注册成hive的永久函数,spark on hive直接访问能不能使用呢?
-
步骤1:hive udf准备
打包hive udf,上传至hdfs:/udf目录
hadoop fs -mkdir -p /test/hive/udf
hadoop fs -put hive-function-1.0-SNAPSHOT.jar /test/hive/udf
-
步骤2:注册永久hive函数
进入hive shell
create function my_udf_test as 'com.iszhaoy.udf.StringUti