美文网首页
51cto赵强HADOOP学习(十七)hive的函数

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

作者: lehuai | 来源:发表于2017-12-20 19:36 被阅读0次

    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;
    
    

    相关文章

      网友评论

          本文标题:51cto赵强HADOOP学习(十七)hive的函数

          本文链接:https://www.haomeiwen.com/subject/wcvgwxtx.html