hive 元数据 自定义_Hive中的用户自定义函数
1.1 關于自定義函數
1)Hive 自帶了一些函數,比如:max/min等,但是數量有限,自己可以通過自定義UDF來方便的擴展。
2)當Hive提供的內置函數無法滿足你的業務處理需要時,此時就可以考慮使用用戶自定義函數(UDF:user-defined function)。
3)根據用戶自定義函數類別分為以下三種:
?(1)UDF(User-Defined-Function)
?一進一出
?(2)UDAF(User-Defined Aggregation Function)
?聚集函數,多進一出
?類似于:count/max/min
?(3)UDTF(User-Defined Table-Generating Functions)
?一進多出
?如lateral view explore()
4)官方文檔地址
5)編程步驟:
?(1)繼承org.apache.hadoop.hive.ql.exec.UDF
?(2)需要實現evaluate函數;evaluate函數支持重載;
?(3)在hive的命令行窗口創建函數
?a)添加jar
add jar linux_jar_path
?b)創建function
create [temporary] function [dbname.]function_name AS class_name;
?(4)在hive的命令行窗口刪除函數
Drop [temporary] function [if exists] [dbname.]function_name;
6)注意事項
?(1)UDF必須要有返回類型,可以返回null,但是返回類型不能為void;
1.2 案例實操
1)定義了四個UDF類,代碼見:GitHub
使用方法:你可以選擇在IDEA中checkout該項目,然后使用maven打成jar包后放置到hive的安裝目錄,“hive/lib”目錄下
如:
2)在hive中執行add操作,添加所配置的jar包:
hive (default)> add jar /opt/module/hive/lib/log-hive.jar;
3)注冊永久函數
hive (default)>create function getdaybegin AS 'com.bigdata.hive.DayBeginUDF';
hive (default)>create function getweekbegin AS 'com.bigdata.hive.WeekBeginUDF';
hive (default)>create function getmonthbegin AS 'com.bigdata.hive.MonthBeginUDF';
hive (default)>create function formattime AS 'com.bigdata.hive.FormatTimeUDF';
4)驗證函數
?由于我將Hive的元數據信息選擇保存在MySQL中(Hive的Metastore默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore),所以選擇登錄mysql
[bigdata@hadoop101 ~]$ mysql -uroot -p000000
mysql> show databases;
mysql> use metastore;
mysql> show tables;
mysql> select * from FUNCS;
下面是我在Dbeaver中查看到的表的具體信息:
可以發現四個自定義函數已經添加進去了。
關于FUNC表字段的描述:
5)刪除函數
hive (applogsdb)> drop function getdaybegin;
hive (applogsdb)> drop function getweekbegin;
hive (applogsdb)> drop function getmonthbegin;
hive (applogsdb)> drop function formattime;
6)注意:在哪個數據庫中注冊的永久函數,必須在哪個數據庫下將該方法刪除
比如在applogsdb數據庫中創建的方法,必須在該數據中調用drop方法才能實現刪除功能。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的hive 元数据 自定义_Hive中的用户自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字段定义_逐浪CMS对用户注册字段正则的
- 下一篇: html树状图右侧_树状图及制作方法(E