hive添加永久自定义函数

永久自定义hive函数

1:做这件事的原因:

有一些函数是比较基础的,公用的,每次都要create temporary function麻烦了,这样的基础函数需要直接集成到hive中去,避免每次都要创建。

2:步骤

本人拥有一个账户zb_test

自定义的函数已经准备好

登陆linux账户,修改该账户的home目录下的.bashrc文件:

把CLASSPATH改成如下:

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/

tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/li

b/*:$CLASSPATH(目的是自己编译的时候要用到)

获取hive-0.12.0-cdh5.0.0-src.tar.gz的源代码

解压,找到hive-exec-0.12.0-cdh5.0.0.jar包(hive函数跟这个有关),再解压。

jar -xvf XXX.jar

编译自定义函数的java文件,比如放在utf下

Javac ./utf/*

产生.class文件,放到abc目录下。

把.class文件打成jar包

Jar -cvf ./hello.jar ./abc/*

产生一个jar包,叫hello.jar

把jar包放到/data/zb_test/目录下

然后修改/data/zb_test/.bashrc文件的:

export CLASSPATH=/data/zb_test/hello.jar:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/lib/*:$CLASSPATH(为了测试用的)

将函数test注册到hive的函数列表中
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
import org.apache.hadoop.hive.ql.udf.UDFTest;

registerUDF(“test”, UDFTest.class,false);

重要步骤:

1:把刚刚产生的所有的.class文件都放到修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf下面

2:然后编译FunctionRegistry.java文件:编译通过以后,我们找到hive-exec-0.12.0-cdh5.0.0.jar里面的$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.class文件,我们把替换了。

这些路径都是在hive-exec-0.12.0-cdh5.0.0.jar解压后的org的路径下的。

其实把这两个步骤做了以后,重新把刚刚解压的hive-exec-0.12.0-cdh5.0.0.jar打成jar包,替换了hive里的,就可以了。

时间: 2024-07-30 11:36:27

hive添加永久自定义函数的相关文章

开发HIVE的UDTF自定义函数

[Author]: kwu UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求,开发HIVE的UDTF自定义函数具体步骤如下: 1.继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法. 2.UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(

hadoop(十) - hive安装与自定义函数

一. Hive安装 Hive只在一个节点上安装即可 1. 上传tar包 2. 解压 tar -zxvf hive-0.9.0.tar.gz -C /cloud/ 3. 配置mysql metastore(切换到root用户) 3.1 配置HIVE_HOME环境变量 3.2 安装mysql 查询以前安装的mysql相关包: rpm -qa | grep mysql 暴力删除这个包: rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps 安装mysql: rp

Hive自定义函数的学习笔记(1)

前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到, 因此hive提供了自定义函数的接口, 方便用户扩展. 自己好像很久没接触hadoop了, 也很久没博客了, 今天趁这个短期的项目, 对hive中涉及的自定义函数做个笔记. 准备: 编写hive自定义函数前, 需要了解下当前线上hive的版本. hive --vesion 比如作者使用到的hive

在SQL中使用自定义函数

  由于数据库的一个表字段中多包含html标签,现在需要修改数据库的字段把html标签都替换掉.当然我可以通过写一个程序去修改,那毕竟有点麻烦.直接在查询分析器中执行,但是MS SQL Server并没有提供正则表达式,替换html标签可不那么容易.我们可以通过CLR托管来实现一个通过正则表达式来替换html标签的自定义函数.(注:SQL CLR只能在MS SQL Server 2005或以上版本中适用) 第一步:通过Visual Studio 2008新建一个SQL Server项目 第二步:

Spark(十八)SparkSQL的自定义函数UDF

在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数,类似在group by之后使用的sum,avg等 UDTF(User-Defined Table-Generating Functions),用户自定义生成函数,有点像stream里面的flatMap 自定

Spark学习之路 (十九)SparkSQL的自定义函数UDF

讨论QQ:1586558083 在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数,类似在group by之后使用的sum,avg等 UDTF(User-Defined Table-Generating Functions),用户自定义生成函数,有点像str

Spark学习之路 (十九)SparkSQL的自定义函数UDF[转]

在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数,类似在group by之后使用的sum,avg等 UDTF(User-Defined Table-Generating Functions),用户自定义生成函数,有点像stream里面的flatMap 自定

Hive自定义函数(UDF、UDAF)

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数. UDF 用户自定义函数(user defined function)–针对单条记录. 创建函数流程 1.自定义一个Java类 2.继承UDF类 3.重写evaluate方法 4.打成jar包 6.在hive执行add jar方法 7.在hive执行创建模板函数 8.hql中使用 Demo01: 自定义一个Java类 package UDFDemo; import org.apache.hadoop.hive.

[Hive_12] Hive 的自定义函数

0. 说明 UDF //user define function //输入单行,输出单行,类似于 format_number(age,'000') UDTF //user define table-gen function    //输入单行,输出多行,类似于 explode(array); UDAF //user define aggr function    //输入多行,输出单行,类似于 sum(xxx) Hive 通过 UDF 实现对 temptags 的解析 1. UDF 1.1 代码