0
点赞
收藏
分享

微信扫一扫

hive自定义函数

sunflower821 2022-12-06 阅读 97


需要引入的jar包(maven)

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
</dependency>

注意下:如果不引人jdk.tools,可能会报错:Missing artifact jdk.tools:jdk.tools:jar:1.8;


这个tools就是JDK目录下的tools.jar,我把它放到了私服上了。


2、新建一个class

package com.hadoop.hive;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/****************************************************************************
* com.hadoop.hive ConcatString.java Created on 2015年11月20日
*
* @Author: linfenliang
* @Description:
* @Version: 1.0
***************************************************************************/
public class ConcatString extends UDF{
public Text evaluate(Text t1,Text t2) {
return new Text(t1.toString()+"*****"+t2.toString());
}
}


这个类是我们的自定义函数,用来处理自己的业务逻辑,这里用字符串操作代替,同时自定义的函数需要继承UDF类。



3、将该工程打包成jar上传到服务器目录如下:


/var/develop/apache-hive-1.2.1-bin/

4、将该jar添加到hive中,

add jar /var/develop/apache-hive-1.2.1-bin/hadoop-hive-0.0.1-SNAPSHOT.jar

5、在hive命令行中创建临时函数,调用自定义函数,


create temporary function myconcat as 'com.hadoop.hive.ConcatString';

查询试下:

select myconcat('111','222');

输出结果:


+--------------+--+
| _c0 |
+--------------+--+
| 111*****222 |
+--------------+--+
1 row selected (0.079 seconds)

举报

相关推荐

0 条评论