• HIVE自定义函数


    UDF  操作单个数据行,产生单个数据行;

    1.
    [hadoop@h91 hhh]$ vi TimeFormat.java

    import java.sql.Date;
    import java.text.SimpleDateFormat;
    import org.apache.hadoop.hive.ql.exec.UDF;
    public class TimeFormat extends UDF {
     public String evaluate(String num){
      Date d=new Date(Long.decode(num));
      SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
      return sdf.format(d) ;
     }
    }


    2.打包
    [hadoop@h91 hhh]$ /usr/jdk1.7.0_25/bin/javac -classpath /home/hadoop/hadoop-0.20.2-cdh3u5/hadoop-core-0.20.2-cdh3u5.jar:/home/hadoop/hive-0.9.0-bin/lib/hive-exec-0.9.0.jar TimeFormat.java

    [hadoop@h91 hhh]$ vi main.mf
    Manifest-Version: 1.0

    [hadoop@h91 hhh]$ /usr/jdk1.7.0_25/bin/jar cvfm TF.jar main.mf TimeFormat.class

    3.
    hive> add jar /home/hadoop/hhh/TF.jar;
    hive> CREATE TEMPORARY FUNCTION TFF AS 'TimeFormat';

    create table ss(id bigint)
         row format delimited
         fields terminated by ' '
         stored as textfile;


    hive> load data local inpath '/home/hadoop/c.txt' into table ss;

    [hadoop@h851 ~]$ date +%s (显示当前时间 转换成秒)
    (时间戳为 把时间转换成秒 *1000 变为 毫秒点位)

    [hadoop@h851 ~]$ vi c.txt
    1417792627000



    TFF把时间戳 转换为 ("yyyy-MM-dd HH:MM:SS")
    hive> select TFF(time) from ha;


    -----------------------------------------------
    [hadoop@h91 hhh]$ vi hello.java
    import org.apache.hadoop.hive.ql.exec.UDF;
    public class hello extends UDF {
        public String evaluate(String str) {

            try {

                return "HelloWorld " + str;

            } catch (Exception e) {

                return null;

            }
        }
    }

    2.打包
    [hadoop@h91 hhh]$ /usr/jdk1.7.0_25/bin/javac -classpath /home/hadoop/hadoop-0.20.2-cdh3u5/hadoop-core-0.20.2-cdh3u5.jar:/home/hadoop/hive-0.9.0-bin/lib/hive-exec-0.9.0.jar hello.java

    [hadoop@h91 hhh]$ vi main.mf
    Manifest-Version: 1.0

    [hadoop@h91 hhh]$ /usr/jdk1.7.0_25/bin/jar cvfm H.jar main.mf hello.class

    3.
    hive> add jar /home/hadoop/hhh/H.jar;
    hive> CREATE TEMPORARY FUNCTION HH AS 'hello';

    hive> select HH(name) from ha;



  • 相关阅读:
    SAS的初级入门(六)
    SAS的初级入门(五)
    SAS的初级入门(四)
    SAS的初级入门(三)
    Deep Learning 的阅读笔记(一)
    SAS的初级入门(二)
    SAS的初级入门(一)
    Linux使用shell脚本监控
    Python中正则表达式的巧妙使用
    140种Python标准库、第三方库和外部工具
  • 原文地址:https://www.cnblogs.com/jieran/p/9038331.html
Copyright © 2020-2023  润新知