zoukankan      html  css  js  c++  java
  • hive函数

    内置函数

    测试各种内置函数的快捷方法:

    1、创建一个dual

    create table dual(id string);

    2、load一个文件(一行,一个空格)到dual

    3、select substr('angelababy',2,3) from dual;

     Hive自定义函数和Transform

    Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDFuser-defined function)。

    自定义函数类别

    UDF  作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

    UDAF(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(countmax

    UDF开发实例

    l 简单UDF示例

    1、先开发一个java类,继承UDF,并重载evaluate方法

    package cn.itcast.bigdata.udf
    import org.apache.hadoop.hive.ql.exec.UDF;
    import org.apache.hadoop.io.Text;
    
    public final class Lower extends UDF{
        public Text evaluate(final Text s){
            if(s==null){return null;}
            return new Text(s.toString().toLowerCase());
        }
    }

    2、打成jar包上传到服务器

    3、将jar包添加到hiveclasspath

    hive>add JAR /home/hadoop/udf.jar;

    4、创建临时函数与开发好的java class关联

    Hive>create temporary function tolowercase as 'cn.itcast.bigdata.udf.ToProvince';

    5、即可在hql中使用自定义的函数strip 

    lJson数据解析UDF开发

    Transform实现

    HiveTRANSFORM 关键字提供了在SQL中调用自写脚本的功能

    适合实现Hive中没有的功能又不想写UDF的情况

    使用示例1下面这句sql就是借用了weekday_mapper.py对数据进行了处理.

    CREATE TABLE u_data_new (
      movieid INT,
      rating INT,
      weekday INT,
      userid INT)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '	';
    
    add FILE weekday_mapper.py;
    
    INSERT OVERWRITE TABLE u_data_new
    SELECT
      TRANSFORM (movieid , rate, timestring,uid)
      USING 'python weekday_mapper.py'
      AS (movieid, rating, weekday,userid)
    FROM t_rating;

    其中weekday_mapper.py内容如下

    #!/bin/python
    import sys
    import datetime
    
    for line in sys.stdin:
      line = line.strip()
      movieid, rating, unixtime,userid = line.split('	')
      weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()
      print '	'.join([movieid, rating, str(weekday),userid])
  • 相关阅读:
    20162307 实验二实验报告
    20162307 第六周学习总结
    20162307 第5周学习总结
    20162306 2016-2017-2《程序设计与数据结构》第八周学习总结
    20162306 2016-2017-2《程序设计与数据结构》第七周学习总结
    第二次实验报告
    20162306 2016-2017-2《程序设计与数据结构》第六周学习总结
    20162306 2016-2017-2《程序设计与数据结构》第五周学习总结
    第一次实验报告
    20162306陈是奇 2016-2017-2《程序设计与数据结构》第四周学习总结
  • 原文地址:https://www.cnblogs.com/duan2/p/7594263.html
Copyright © 2011-2022 走看看