HIve自定义函数

官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

在shell中找版本

[hadoop@hadoop001 bin]$ pwd
/home/hadoop/app/hive-1.1.0-cdh5.7.0/bin

版本要对应上

在idae中添加hive依赖;

1.1.0-cdh5.7.0

      org.apache.hive
      hive-exec
      ${hive.version}
    

之后看一下如何开发

package com.ruoze.g5;
//hive自定义UDF

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

public class RuozeUDF extends UDF {
    public String evaluate(String name){
        return "Ruozedata:" + name;
    }
  public static void main (String[]arge) {
        RuozeUDF udf= new RuozeUDF();
       System.out.println(udf.evaluate("豆豆"));;
  }
}

简单的开发完,要在idea上测试一下
HIve自定义函数_第1张图片
然后进行打包上传
HIve自定义函数_第2张图片

[hadoop@hadoop001 etc]$ hadoop fs -mkdir /lib/
[hadoop@hadoop001 etc]$ hadoop fs -put g5spark1-1.0.jar /lib/
hive (default)> CREATE FUNCTION ruoze_hello AS 'com.ruoze.g5.RuozeUDF'
              > 
              > USING JAR 'hdfs://hadoop001:9000/lib/g5spark1-1.0.jar'; 
converting to local hdfs://hadoop001:9000/lib/g5spark1-1.0.jar
Added [/tmp/fb09b343-d4ab-49e5-a851-9c3c182ed855_resources/g5spark1-1.0.jar] to class path
Added resources: [hdfs://hadoop001:9000/lib/g5spark1-1.0.jar]
OK
Time taken: 0.398 seconds
hive (default)> 


结果:

mysql> select * from funcs \G;
*************************** 1. row ***************************
    FUNC_ID: 1
 CLASS_NAME: com.ruoze.g5.RuozeUDF
CREATE_TIME: 1546951354
      DB_ID: 1
  FUNC_NAME: ruoze_hello
  FUNC_TYPE: 1
 OWNER_NAME: NULL
 OWNER_TYPE: USER
1 row in set (0.00 sec)

ERROR: 
No query specified

你可能感兴趣的:(HIve自定义函数)