UDF :user define function 用户自定义函数 一行输入,一行输出
定义Java类并实现org.apache.hadoop.hive.ql.exec.UDF——>覆写evaluate
需求: 将字符串类型的数据 2012-12-31 14:37:36 转换为 2012/12/31
maven依赖:
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>1.1.0</version> </dependency>
继承UDF类,重写evaluate函数
package com.cslc; import org.apache.hadoop.hive.ql.exec.UDF; public class testudf extends UDF{ public static String evaluate(String time){ String day=time.split(" ")[0]; String result =day.substring(0,4)+"/"+day.substring(5,7)+"/"+day.substring(8,10); return result; } public static void main(String[] args) { String date1=("2017-06-13 18:00:01"); System.out.println(evaluate(date1)); } }
打包,上传至hdfs,给test库创建函数testdateudf
hadoop fs -put test.jar hdfs://cslcdip/home/dip/ create function test.testdateudf as 'com.cslc.testUDF' using jar 'hdfs://cslcdip/home/dip/test.jar'
这样就可以在test库里使用testdateudf函数了