HIVE---UDF

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangguosb/article/details/83795489

UDF介绍

  UDF,即用户自定义函数,本质就是插件。整体思路是:继承基类UDF,实现evaluate接口,指定类名即可。HIVE中UDF分为两类:临时函数和永久函数,函数类型的不同,具体操作过程略有差异。

临时函数

  函数的生命周期与客户端的会话强绑定,会话关闭时函数被注销;

持久函数

  函数的元信息被持久化到元数据,与客户端会话的生命相互独立;

UDF添加过程

Step1:编写Java实现类,并进行打包;


package com.example.hive.udf;
 
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
 
public final class Lower extends UDF {
  public Text evaluate(final Text s) {
    if (s == null) { return null; }
    return new Text(s.toString().toLowerCase());
  }
}

Step2:注册UDF,与实现类建立映射关系;

  • 临时函数:首先,jar包添加到classpath; 然后执行CREATE命令注册函数,如下:
CREATE TEMPORARY FUNCTION function_name AS class_name;
  • 持久函数:直接执行CREATE命令注册函数,如下:
CREATE FUNCTION [db_name.]function_name AS class_name
  [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];

说明:file_uri为jar包的存放路径,集群模式下使用HDFS路径;单机模式下,可以使用本地路径;

UDF删除过程

  • 临时函数:关闭当前会话,或者使用DROP命令;
DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
  • 持久函数: 只能使用DROP命令;
DROP FUNCTION [IF EXISTS] function_name;

函数查看

  • 查看所有所有函数:show functions;
  • 查看某类函数:show functions like ‘*month*’;
  • 查看某个函数的用法:desc function 函数名;
  • 查看某个函数的详细用法:desc extended function 函数名;

参考:

  1. https://cwiki.apache.org/confluence/display/Hive/HivePlugins;
  2. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/ReloadFunction;

猜你喜欢

转载自blog.csdn.net/yangguosb/article/details/83795489