1)内置函数
hive> show functions; // 显示所有函数,比官网详细
hive> desc function substr; // 查看函数的详细信息
hive> desc function extended substr; // 查看函数的更详细信息,包括语法(substr的pos从1开始,<0是从尾开始)
2)UDF函数介绍 User-Defined Functions (UDFs)
built-in 的函数满足不了我们的业务需求,需要自己开发函数去实现
2.1 UDF (工作常用)
one2one 一条数据进来,一条数据出去 如:concat/lower
2.2 UDAF
A是聚合,即many2one 如:count/max......(聚合函数)
2.3 UDTF(基本用不到)
T是table,即one2many 一条数据进来,多条数据出去 如:lateral view explode
Q:在传统的db2/oracle ==> 云化(Hadoop,即:用大数据处理),怎样实现?
A:首先要保持sql不变,然后根据该sql再在hive上面实现,这样就得使用UDF函数了。
3)开发UDF
1. 继承UDF类
2. 重写evaluate方法建议: -- 要有返回值
-- 参数类型使用Hadoop的类型(只是建议,用java类型也不会错)
3. 打成jar包
4. 添加到hive中 hive> add jar /home/hadoop/lib/hive-1.0.jar;
5. 创建(临时)函数 hive> create (temporary) function say_hello as 'com.ruozedata.udf.HelloUDF';
6. 创建持久函数
hive> CREATE FUNCTION say_hello2 AS 'com.ruozedata.udf.HelloUDF'
USING JAR 'hdfs://hadoop000:8020/lib/hive-1.0.jar';
7. 通过hive> list jars; 可以查询到加了哪些jar包进来
4)注意
自定义UDF,在show functions;命令下可能会没有显示到自定义的持久函数,但可以通过以下方法查询:
mysql> select * from FUNCS \G;