Hive函数

系统自带的函数

查看系统自带的函数

  • 查看系统自带的函数

    show functions;

  • 显示自带的函数的用法

    desc function upper;

  • 详细显示自带的函数的用法

    desc function extended upper;

自定义函数描述

描述

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function),详情请查看:官网

根据用户自定义函数类别分为以下三种

  • UDF(User-Defined-Function)

    一进一出

  • UDAF(User-Defined Aggregation Function)

    聚集函数,多进一出

    类似于:count/max/min

  • UDTF(User-Defined Table-Generating Functions)

    一进多出

    如lateral view explore()

自定义开发步骤(UDF)

  • 继承org.apache.hadoop.hive.ql.UDF

  • 需要实现evaluate函数;evaluate函数支持重载

  • 在hive的命令行窗口创建函数

    1. 添加jar

      add jar linux_jar_path

    2. 创建function

      create [temporary] function [dbname] function_name AS class_name

  • 在hive命令窗口删除函数

    1. Drop [temporary] function [if exists] [dbname.] function_name;
  • 注意事项

    1. UDF必须要有返回类型,可以返回null,但是返回类型不能为void

    2. UDF中常用Text/LongWritable等类型,不推荐使用java类型

开发案例(UDF)

  • 创建一个java工程,并创建一个lib文件夹

  • 将hive的jar包解压后,将apache-hive-1.2.1-bin\lib文件下的jar包都拷贝到java工程中

  • 创建一个类

    package com.demo.hive;
    
    import org.apache.hadoop.hive.ql.exec.UDF;
    
    public class Lower extends UDF {
    
        public String convert(final String s) {
    
            if (s == null) {
    return null;
    } return s.toString().toLowerCase();
    }
    }
  • 打成jar包上传到服务器/opt/module/jars/udf.jar

  • 将jar包添加到hive的classpath

    hive (default)> add jar /opt/module/jars/udf.jar;

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

    hive (default)> create temporary function my_lower as "com.demo.udf.Lower";

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

    select ename, my_lower(ename) lowername from emp;

【Hive五】Hive函数UDF的更多相关文章

  1. 三 Hive 数据处理 自定义函数UDF和Transform

    三  Hive 自定义函数UDF和Transform 开篇提示: 快速链接beeline的方式: ./beeline -u jdbc:hive2://hadoop1:10000 -n hadoop 1 ...

  2. HIVE 编写自定义函数UDF

    一 新建JAVA项目 并添加 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar hive-exec-2.1.0.jar 在HIVE安装目录的lib目录下 had ...

  3. Hive(五):hive与hbase整合

    配置 hive 与 hbase 整合的目的是利用 HQL 语法实现对 hbase 数据库的增删改查操作,基本原理就是利用两者本身对外的API接口互相进行通信,两者通信主要是依靠hive_hbase-h ...

  4. Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)

    本博文的主要内容如下: Hive文件存储格式 Hive 操作之表操作:创建外.内部表 Hive操作之表操作:表查询 Hive操作之表操作:数据加载 Hive操作之表操作:插入单表.插入多表 Hive语 ...

  5. Hadoop3集群搭建之——hive添加自定义函数UDF

    上篇: Hadoop3集群搭建之——虚拟机安装 Hadoop3集群搭建之——安装hadoop,配置环境 Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoo ...

  6. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)

    Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Hive中的用户自定义函数UDF

    Hive中的自定义函数允许用户扩展HiveQL,是一个非常强大的功能.Hive中具有多种类型的用户自定义函数.show functions命令可以列举出当前Hive会话中的所加载进来的函数,包括内置的 ...

  8. Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)

    Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...

  9. Hive扩展功能(三)--使用UDF函数将Hive中的数据插入MySQL中

    软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...

  10. hive自定义函数UDF UDTF UDAF

    Hive 自定义函数 UDF UDTF UDAF 1.UDF:用户定义(普通)函数,只对单行数值产生作用: UDF只能实现一进一出的操作. 定义udf 计算两个数最小值 public class Mi ...

随机推荐

  1. js常用代码记录

    1.动态key得到某对象中相对应的value js中想根据动态key得到某对象中相对应的value的方法有二: var key = "name1";var value = obj[ ...

  2. SVNKit学习——使用低级别的API(ISVNEditor接口)直接操作Repository的目录和文件(五)

      本文是参考官方文档的实现,官方wiki:https://wiki.svnkit.com/Committing_To_A_Repository 本文核心使用的是ISVNEditor这个接口直接对Re ...

  3. [问题记录]libpomelo的安装

    1. 描述: 按照github上的操作完成 Windows in your libpomelo project root directory open git bash and type in mkd ...

  4. Django Url设计 小知识点

    mysite/news/urls.py: from django.conf.urls import url from . import views urlpatterns = [ url(r'^art ...

  5. 51nod 1019 逆序数(逆序数+离散化)

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.   如2 4 3 1中,2 1,4 3,4 1,3 1是 ...

  6. reactnative调研

    /**   * This function parses the exported methods inside RCTBridgeModules and   * generates an array ...

  7. BZOJ1770:[USACO]lights 燈(高斯消元,DFS)

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  8. C++禁止使用拷贝构造函数和赋值运算符方法

    1.将拷贝构造函数和赋值运算符声明为私有,并不予实现 class Uncopyable { private: Uncopyable(const Uncopyable &); // 阻止copy ...

  9. [19/03/28-星期四] IO技术_基本概念&字符编码与解码

    一.概念 输入(Input)  指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据) 常见的应用: Ø 读取硬盘上的文件内容到程序.例如:播放器打开一个视频文件.word打开一个do ...

  10. shiro权限配置的细节问题&认证

    细节: ---[urls]部分配置,其格式是    url=拦截器[参数] ,拦截器[参数] ---如果当前请求的 url 匹配 [urls] 部分或者某个url模式,将会执行配置的拦截器 ---an ...