Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
函數(shù)
系統(tǒng)內(nèi)置函數(shù)
1.查看系統(tǒng)自帶的函數(shù)
show functuions;2.顯示自帶的函數(shù)的用法
desc function month;3.詳細(xì)顯示自帶的函數(shù)的用法
desc function extended month;自定義函數(shù)
1)Hive 自帶了一些函數(shù),比如:max/min等,但是數(shù)量有限,自己可以通過(guò)自定義UDF來(lái)方便的擴(kuò)展。
2)當(dāng)Hive提供的內(nèi)置函數(shù)無(wú)法滿足你的業(yè)務(wù)處理需要時(shí),此時(shí)就可以考慮使用用戶自定義函數(shù)(UDF:user-defined function)。
3)根據(jù)用戶自定義函數(shù)類(lèi)別分為以下三種:
(1)UDF(User-Defined-Function)
一進(jìn)一出
(2)UDAF(User-Defined Aggregation Function)
聚集函數(shù),多進(jìn)一出
類(lèi)似于:count/max/min
(3)UDTF(User-Defined Table-Generating Functions)
一進(jìn)多出
如lateral view explore()
4)官方文檔地址
https://cwiki.apache.org/confluence/display/Hive/HivePlugins
5)編程步驟:
(1)繼承org.apache.hadoop.hive.ql.UDF
(2)需要實(shí)現(xiàn)evaluate函數(shù);evaluate函數(shù)支持重載;
(3)在hive的命令行窗口創(chuàng)建函數(shù)
a)添加jar
add jar?linux_jar_path
b)創(chuàng)建function,
create [temporary] function [dbname.]function_name AS class_name;
(4)在hive的命令行窗口刪除函數(shù)
Drop [temporary] function [if exists] [dbname.]function_name;
6)注意事項(xiàng)
(1)UDF必須要有返回類(lèi)型,可以返回null,但是返回類(lèi)型不能為void;
?
自定義UDF函數(shù)
1.創(chuàng)建一個(gè)Maven工程Hive
2.導(dǎo)入依賴(lài)
| <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>1.2.1</version> </dependency> </dependencies> |
3.創(chuàng)建一個(gè)類(lèi)
| package com.atguigu.hive; import org.apache.hadoop.hive.ql.exec.UDF; ? public class Lower extends UDF { ? public String evaluate (final String s) { ? if (s == null) { return null; } ? return s.toLowerCase(); } } |
4.打成jar包上傳到服務(wù)器/opt/module/jars/udf.jar
5.將jar包添加到hive的classpath
hive (default)> add jar /opt/module/datas/udf.jar;
6.創(chuàng)建臨時(shí)函數(shù)與開(kāi)發(fā)好的java class關(guān)聯(lián)
hive (default)> create temporary function mylower as "com.atguigu.hive.Lower";
7.即可在hql中使用自定義的函數(shù)strip?
hive (default)> select ename, mylower(ename) lowername from emp;
?
總結(jié)
以上是生活随笔為你收集整理的Hive _函数(系统内置函数、自定义函数、自定义UDF函数)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hive _偏门常用查询函数(三)附带实
- 下一篇: Spark _13_二次排序问题