日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive 元数据 自定义_Hive中的用户自定义函数

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的用户自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。