Hive UDF 环境搭建(Eclipse+Maven)

安装Maven (https://blog.csdn.net/rav009/article/details/79469303)

安装Eclipse

安装Eclipse的Maven插件 m2e


使用Eclipse创建Maven项目

Group ID一般是org.yourname.projectname, Group ID会变成你代码中类的前缀

Artifact ID是Projectname, 就是项目名称


创建项目后找到pom.xml, 在dependencies节点里添加:

    <dependency>
    	<groupId>org.apache.hive</groupId>
    	<artifactId>hive-exec</artifactId>
    	<version>2.3.2</version>
    </dependency>

版本号根据hive的情况修改, 我写这篇文章的时候 hive已经有2.3.3了


扫描二维码关注公众号,回复: 2198780 查看本文章

来到项目目录下, 这个目录里应该有pom.xml, 运行命令行

mvn install

如果命令行报错 ,说某个jar包 invalid LOC header (bad signature), 就去repository里删掉这个jar包的文件夹,重新运行命令行, 会自动重新下载. 对于ubuntu来说repository在~/.m2

在src/main/java下添加新文件HelloWorld.java,代码如下:

package cn.pywei.HiveUDF;

import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;

@Description(name="HelloWorld",value="_FUNC_(input), return the string \"HelloWorld\".",extended ="E.g. \n select hello(1);")


public class HelloWorld extends UDF {


	public String evaluate(String s) {
		return "HelloWorld";
	}
	
	public String evaluate(int s) {
		return "HelloWorld";
	}
	
	public String evaluate(boolean s) {
		return "HelloWorld";
	}
}

export成jar文件

在Hive中导入jar文件:

add jar /path/name.jar;

在Hive中创建临时函数:

create temporary function hello as 'cn.pywei.HiveUDF.HelloWorld';

执行:

select hello(1);
select hello('abc');
select hello(True);
describe function hello;
describe function extended hello;

此外还可以用以下命令操作jar包:

list jar;
delete jar /path/name.jar;
delete jar; --delete all jar;


参考链接:

https://blog.csdn.net/u010376788/article/details/50532166

https://www.jianshu.com/p/7ebc8f9c9b78

http://www.crazyant.net/2160.html

猜你喜欢

转载自blog.csdn.net/rav009/article/details/80367329