hive自定义函数

这是个很有用的功能,用来处理自己的业务逻辑
1、 需要引入的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值