hive 中简单的udf函数编写

1.注册函数,使用using jar方式在hdfs上引用udf库。
$hive>create function formattime as ‘com.it18zhang.applogs.udf.FormatTimeUDF‘ using jar ‘hdfs://hadoop01/app/app-logs-hive-1.0-SNAPSHOT.jar‘;2.注销函数,只需要删除mysql的hive数据记录即可。
delete from func_ru ;
delete from funcs ;show funcyions;desc formatted function substring;
2.udf函数获取天开始一些简单方法@Description(name = "udf_getdaybegin",
            value = "getdaybegin",
            extended = "getdaybegin() ;\r\n"
                               + " getdaybegin(2) \r\n"
                               + " getdaybegin(‘2017/06/29 01:02:03‘) \r\n"
                               + " getdaybegin(‘2017/06/29 01:02:03‘,2) \r\n"
                               + " getdaybegin(date_obj) \r\n"
                               + " getdaybegin(date_obj,2)")
    public class DayBeginUDF extends UDF {
        /**
         * 计算现在的起始时刻(毫秒数)
         */
        public long evaluate() throws ParseException {
            return evaluate(new Date());
        }

        /**
         * 指定天偏移量
         */
        public long evaluate(int offset) throws ParseException {
            return evaluate(DateUtil.getDayBeginTime(new Date(), offset));
        }

        /**
         * 计算某天的开始时刻(毫秒数)
         */
        public long evaluate(Date d) throws ParseException {
            return DateUtil.getDayBeginTime(d).getTime();
        }

        /**
         * 计算某天的开始时刻(毫秒数)
         */
        public long evaluate(Date d, int offset) throws ParseException {
            return DateUtil.getDayBeginTime(d, offset).getTime();
        }

        /**
         * 计算某天的起始时刻(毫秒数)
         */
        public long evaluate(String dateStr) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            Date d = sdf.parse(dateStr);
            return evaluate(d);
        }

        /**
         * 计算某天的起始时刻(毫秒数)
         */
        public long evaluate(String dateStr, int offset) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            Date d = sdf.parse(dateStr);
            return DateUtil.getDayBeginTime(d, offset).getTime();
        }

        /**
         * 计算某天的起始时刻(毫秒数)
         */
        public long evaluate(String dateStr, String fmt) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat(fmt);
            Date d = sdf.parse(dateStr);
            return DateUtil.getDayBeginTime(d).getTime();
        }

        /**
         * 计算某天的起始时刻(毫秒数)
         */
        public long evaluate(String dateStr, String fmt, int offset) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat(fmt);
            Date d = sdf.parse(dateStr);
            return DateUtil.getDayBeginTime(d, offset).getTime();
        }
    }

原文地址:https://www.cnblogs.com/hejunhong/p/10321022.html

时间: 2024-10-01 06:27:59

hive 中简单的udf函数编写的相关文章

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

hive中的日期转换函数

1.unix时间戳转时间函数   语法: from_unixtime(bigintunixtime[, string format]) 返回值: string 说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 举例: hive>selectfrom_unixtime(1323308943,'yyyyMMdd')fromdual; 20111208 2.获取当前时区的unix时间戳 ? 1 2 3 4 5 6 7 8 9 10 语法

如何编写自定义hive UDF函数

Hive可以允许用户编写自己定义的函数UDF,来在查询中使用.Hive中有3种UDF: UDF:操作单个数据行,产生单个数据行: UDAF:操作多个数据行,产生一个数据行. UDTF:操作一个数据行,产生多个数据行一个表作为输出. 用户构建的UDF使用过程如下: 第一步:继承UDF或者UDAF或者UDTF,实现特定的方法. UDF实例参见http://svn.apache.org/repos/asf/hive/trunk/contrib/src/java/org/apache/hadoop/hi

hive里的用户定义函数UDF

Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache.hadoop.ql.exec.UDF类,并重载evaluate方法.Hive API提供@Description声明,使用声明可以在代码中添加UDF的具体信息.在Hive中可以使用DESCRIBE语句来展现这些信息. Hive的源码本身就是编写UDF最好的参考资料.在Hive源代码中很容易就能找到

hive 的udf 函数使用

1)依据课程讲解UDF编程案例,完成练习,总结开发UDF步骤,代码贴图,给予注释,重点 2)更改emp 表中名字的大写给为小写. 一:hive 的udf 函数: 1.1 hive UDF 函数概述: 1. hive自带了一些函数比如:max/min 等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展. 2. udf 函数可以直接应用于select 语句,对查询结构做格式化处理之后,然后再输出内容. 1.2 hive 编写udf函数的时候需要注意的地方: 1. 自定义udf函数需要继承o

UDF函数,hive调用java包简单方法

UDF函数,是hadoop在强大的大数据批量导入导出操作之余,为了满足复杂的数据逻辑操作留下的接口 核心思想:不管是UDF函数还是自定义处理jar包,都是要放置在hadoop服务器上的,相当于hadoop多出了一个自定义的处理数据的方法 1)其中调用的不管是参数还是数据库都是以hadoop本身的服务器环境路径为本地路径,而不是自己操作的java环境 2) 现在记录下2种近期使用过的简单方法,非常简单. 1.函数调用 1)导入UDF架包,保证引用UDF时不会编译报错 2)java中建任意类继承UD

hive的udf的编写

1.配置环境 1.引入jar包:hive-exec-0.8.0.jar 和 hadoop-core-0.20.2.jar 2.编写udf函数 1.extends UDF 2.重新定义UDF的evaluate函数. package com.qunar.hiveudf; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.hadoop.hive.q

Hive与MapReduce相关排序及自定义UDF函数

原文链接: https://www.toutiao.com/i6770870821809291788/ Hive和mapreduce相关的排序和运行的参数 1.设置每个reduce处理的数据量(单位是字节) 我们在hive中查看下 配置文件hive-site.xml.template 我们打开配置文件可以看到 这是256MB 如果超过1G,将使用4个reducers 2.设置最大运行的reduce的个数 同上我们可以在配置中找到下面的内容 复制到记事本里,简化了描述,从配置中我们可以看到默认re

hive中udf读写hbase

在大数据开发过程中经常会遇到,将hive中处理后的结果写入hbase中,每次都要写java程序会非常浪费时间,我们就想了一个办法 ,用hive的udf来实现. 只需要调用同一个udf,将表名字段名以及每一个字段的值作为udf的参数,就可以实现写hbase了. 这样大大的节省了开发时间,提升了开发效率. 大家可以按照这种思路写自己需要的功能.这里只简单的列举几个供大家参考,具体操作如下: 一.依赖的jar包 commons-codec-1.7.jar commons-collections-3.2