hive自定义创建临时函数和永久函数以及遇到的问题 | 您所在的位置:网站首页 › 内置函数和自定义函数的区别 › hive自定义创建临时函数和永久函数以及遇到的问题 |
一 创建临时函数
1、先要编写代码继承hive提供的类,并实现抽象方法后打包备用: org.apache.hadoop.hive.ql.udf.generic.GenericUDF org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;2、在hive命令行窗口创建函数 ①添加jar依赖 add jar linux_jar_path;②创建临时函数 create temporary function [dbname.]function_name AS class_name;注意:临时函数只在当前会话窗口有效,关闭窗口或在另一个窗口临时函数都不会存在,在当前窗口内时可以在任意数据库中调用该临时函数 ③删除临时函数(关闭当前会话窗口后会自动删除) drop temporary function [if exists] [dbname.]function_name; 二 创建永久函数与临时函数创建过程一样,在创建永久函数时,不加temporary create function [dbname.]function_name AS class_name;注意:创建永久函数如果不在函数名前指定数据库,则默认是当前数据库.函数名 此时在当前会话窗口能正常查到和运行,但是当在另一个窗口调用该函数时发现调用失败 原因: add jar linux_jar_path;用这个添加jar依赖是临时的,只在添加的会话窗口生效,如果要在另一个窗口调用该永久函数,需要重新再该窗口再一次引用该jar包依赖,不是很方便且过于繁杂 可以在创建永久函数时: create function [dbname.]function_name AS class_name using jar hdfs_jar_path;using此时就是永久生效的,但是此时需要的是在hdfs上的路径,所以需要将jar包放置在hdfs存储路径下才行,不然会报错。 还可以在hive目录下创建一个目录auxlib,将jar包放进去,并重启hive,这样就可以直接创建函数使用 mkdir auxlib |
CopyRight 2018-2019 实验室设备网 版权所有 |