Hive函數
系統自帶的函數
查看系統自帶的函數
-
查看系統自帶的函數
show functions;
-
顯示自帶的函數的用法
desc function upper;
-
詳細顯示自帶的函數的用法
desc function extended upper;
自定義函數描述
描述
當Hive提供的內置函數無法滿足你的業務處理需要時,此時就可以考慮使用用戶自定義函數(UDF:user-defined function),詳情請查看:官網
根據用戶自定義函數類別分為以下三種
-
UDF(User-Defined-Function)
一進一出 -
UDAF(User-Defined Aggregation Function)
聚集函數,多進一出
類似於:count/max/min -
UDTF(User-Defined Table-Generating Functions)
一進多出
如lateral view explore()
自定義開發步驟(UDF)
-
繼承org.apache.hadoop.hive.ql.UDF
-
需要實現evaluate函數;evaluate函數支持重載
-
在hive的命令行窗口創建函數
-
添加jar
add jar linux_jar_path
-
創建function
create [temporary] function [dbname] function_name AS class_name
-
-
在hive命令窗口刪除函數
- Drop [temporary] function [if exists] [dbname.] function_name;
-
注意事項
-
UDF必須要有返回類型,可以返回null,但是返回類型不能為void
-
UDF中常用Text/LongWritable等類型,不推薦使用java類型
-
開發案例(UDF)
-
創建一個java工程,並創建一個lib文件夾
-
將hive的jar包解壓后,將apache-hive-1.2.1-bin\lib文件下的jar包都拷貝到java工程中
-
創建一個類
package com.demo.hive; import org.apache.hadoop.hive.ql.exec.UDF; public class Lower extends UDF { public String convert(final String s) { if (s == null) { return null; } return s.toString().toLowerCase(); } }
-
打成jar包上傳到服務器/opt/module/jars/udf.jar
-
將jar包添加到hive的classpath
hive (default)> add jar /opt/module/jars/udf.jar;
-
創建臨時函數與開發好的java class關聯
hive (default)> create temporary function my_lower as "com.demo.udf.Lower";
-
即可在hql中使用自定義的函數strip
select ename, my_lower(ename) lowername from emp;