51cto赵强HADOOP学习(十七)hive的函数

2017-12-20  本文已影响0人  lehuai

hive的内置函数

image.png
数学函数
    --round
    --ceil
    --floor
--四舍五入
select round(45.926,2),round(45.926,1),round(45.926,0),round(45.926,-1),round(45.926,-2);

--向上取整
select ceil(45.926);

--向下取整
select floor(45.926);

字符函数
--lower  //把字符串转换成小写
--upper  //把字符串转换成大写
select lower('Hello World'),upper('Hello World');

--length  //测字符串的长度
select length('Hello World'),length('你好');

--concat  //拼加字符串
select concat('Hello',' World');

--substr  //求一个字符串的子串
substr(a,b):从a中,第b位开始取,取右边所有的字符
            select substr('Hello World',3);
substr(a,b,c):从a中,第b位开始取,取c个字符
                select substr('Hello World',3,4);

--trim   //去掉一个字符串的空格


--lpad   //左填充
--lpad  //左填充   abcd --->10位
select lpad('abcd',10,'*');

--rpad   //右填充 
--rpad  //右填充
 select rpad('abcd',10,'*');
 
 Hive的收集函数
 --size
 size(map(<key,value>,<key,value>));
 select size(map(1,'Tom',2,'Mary'));
 
 Hive的转换函数
 --cast
 select cast(1 as bigint);
 select cast(1 as float);
 select cast('2015-04-10' as date);

 日期函数
 -to_date
 select to_date('2015-04-23 11:23:11');
 
 -year
 -month
 -day
 select year('2015-04-23 11:23:11'),month('2015-04-23 11:23:11'),day('2015-04-23 11:23:11');
 
 -weekofyear
 select weekofyear('2015-04-23 11:23:11');
 
 -datediff
 select datediff('2015-04-23 11:23:11','2014-04-23 11:23:11');
 
 -date_add
 -date_sub
select date_add('2015-04-23 11:23:11',2),date_sub('2015-04-23 11:23:11',2);

条件函数
-coalesce:从左到右返回第一个不为null的值

-case...when...:条件表达式
    CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
    
select comm,sal,coalesce(comm,sal) from emp6;

给员工涨工资,总裁1000 经理800 其他400
select ename,job,sal,case job when 'PRESIDENT' then sal+1000 when 'MANAGER' then sal+800 else sal+400 end 
from emp6;

聚合函数
-count
-sum
-min
-max
-avg
select count(*),sum(sal),max(sal),min(sal),avg(sal) from emp6;

表生成函数
-explode
select explode(map(1,'Tom',2,'Mary',3,'Mike'));
-json_tuple

Hive的自定义函数(UDF)
Hive的自定义函数(UDF): User Defined Function
可以直接应用于select语句,对查询结构做格式化处理后,再输出内容

Hive自定义函数的实现细节
自定义UDF需要继承org.apache.hadoop.hive.ql.UDF
需要实现evaluate函数,evaluate函数支持重载

Hive自定义函数的部署运行
把程序打包放到目标机器上去
进入hive客户端,添加jar包:
hive>add jar /run/jar/udf_test.jar
创建临时函数:
hive>CREATE TEMPORARY FUNCTION add_example AS 'hive.udf.Add';
查询HQL语句:
SELECT add_example(8, 9) FROM scores;
SELECT add_example(scores.math, scores.art) FROM scores;
SELECT add_example(6, 7, 8, 6.8) FROM scores;
销毁临时函数:
hive> DROP TEMPORARY FUNCTION add_example;

上一篇下一篇

猜你喜欢

热点阅读