-
自定义类继承UDF
package com.fei.bigdata.hadoop.hive.udf; import org.apache.hadoop.hive.ql.exec.UDF; public class FeidataUDF extends UDF { public String evaluate() { return new String("老徐,你要老婆不?只要你开金口,我马上给你送来..."); } public String evaluate(String name) { return new String(name + ",你要老婆不?只要你开金口,我马上给你送来..."); } public static void main(String[] args) { FeidataUDF udf = new FeidataUDF(); String result1 = udf.evaluate(); String result2 = udf.evaluate("隔壁老王"); System.out.println(result1); System.out.println(result2); } }
-
打包上传到服务器
-
添加jar包(注意:使用./hive命令,客户端命令无法使用,并且也是当前session有效)
[hadoop@hadoop01 bin]$ ./hive which: no hbase in (/home/hadoop/app/hive/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/java/jdk/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin) 21/11/21 10:50:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Logging initialized using configuration in file:/home/hadoop/app/hive-1.1.0-cdh5.16.2/conf/hive-log4j.properties WARNING: Hive CLI is deprecated and migration to Beeline is recommended. hive (default)> add jar /home/hadoop/lib/fei-hadoop.jar; Added [/home/hadoop/lib/fei-hadoop.jar] to class path Added resources: [/home/hadoop/lib/fei-hadoop.jar] hive (default)> list jars; /home/hadoop/lib/fei-hadoop.jar
-
在hive中创建function(当前session有效)
create temporary function send_wife as 'com.fei.bigdata.hadoop.hive.udf.FeidataUDF';
-
创建永久的function,如下操作就会在hive的元数据funcs表中增加一条数据
CREATE FUNCTION send_wife AS 'com.fei.bigdata.hadoop.hive.udf.FeidataUDF' USING JAR 'hdfs://hadoop01:9000/feidata/hive/udf/fei-hadoop.jar';
-
使用function
hive (fei_hive)> select send_wife() from dual; OK _c0 老徐,你要老婆不?只要你开金口,我马上给你送来... Time taken: 0.768 seconds, Fetched: 1 row(s) hive (fei_hive)> select send_wife("老王") from dual; OK _c0 老王,你要老婆不?只要你开金口,我马上给你送来... Time taken: 0.071 seconds, Fetched: 1 row(s)
Hive自定义UDF
最新推荐文章于 2023-04-10 22:24:22 发布