一 ,自定義函數的類別
UDF 作用於單個數據行,產生一個數據行作為輸出。(數學函數,字符串函數)
UDAF(用戶定義聚集函數):接收多個輸入數據行,並產生一個輸出數據行。(count,max)
二,UDF開發實例
1,開發一個Java類,繼承UDF,並重載evaluate方法(手動重載)。
1 package cn.itcast.bigdata.udf 2 import org.apache.hadoop.hive.ql.exec.UDF; 3 import org.apache.hadoop.io.Text; 4 5 public final class Lower extends UDF{ 6 public Text evaluate(final Text s){ 7 if(s==null){return null;} 8 return new Text(s.toString().toLowerCase()); 9 } 10 }
2,打成jar包上傳到服務器。
3,將jar包添加到hive的classpath
hive>add JAR /home/hadoop/udf.jar;
4,創建臨時函數與開發好的java class關聯。
create temporary function toprovince as 'cn.itcast.bigdata.udf.ToProvince';
5,即可在hql中使用自定義的函數strip
Select strip(name),age from t_test;