一、内置函数的使用

  • 查看当前hive版本支持的所有内置函数
    show function;

  • 查看某个函数的使用方法及作用,比如查看upper函数
    desc function upper;

  • 查看upper函数更为详细的信息
    desc function extended upper;

  • 转换为小写: lower()
    查询emp表中员工姓名,员工姓名小写显示
    select empno, ename, lower(ename) from emp;

  • 字符串连接: concat()
    查询emp表,将员工姓名追加到员工编号后
    select empno, ename, concat(empno, ename) from emp;



二、自定义函数

UDF分为三种,分别如下

  1. UDF(User-Defined_Function),一进一出(输入一行,输出一行),比如: upper(),lower()等
  2. UDAF(User-Defined Aggregation Funcation),多进一出(输入多行,输出一行),比如: avg(),sum()等.
  3. UDTF(User-Defined Table-Generating Functions),一进多出(输入一行,输出多行),比如: collect_set(), collect_list()等.ABSOLUTE

使用自定义函数需要引入hive-exec的依赖

<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.0</version>
</dependency>
自定义UDF函数

UDF编程模型:
(1) 继承 org.apache.hadoop.hive.ql.exec.UDF
(2) 实现 evaluate() 方法

实现需求: 自定义UDF函数,给指定的字符串前加上字符串hello
比如: 输入 Tom, 输出 helle:Tom

自定义函数有4种使用方式,the following:

  • 方式一(临时函数,只能在当前客户端使用)
    将我们刚编写完成的代码,打成jar maven下 clean package

    将jar包上传到hive
    add jar /home/hadoop/libs.hive-1.0-SNAPSHOT.jar;

    创建函数
    create temporary function say_hello as 'com.bigdata.hadoop.hive.GenericUDFHello';

    查看创建的函数say_hello
    show functions;

    查看函数say_hello的详细信息
    desc function extended say_hello;

    使用函数
    select ename,say_hello(ename) from emp;

  • 方式二(临时函数,只能在当前客户端使用)
    在$HIVE_HOME下新建目录auxlib,将jar拷贝到该目录下,重启hadoop
    cp /home/hadoop/libs/hive-1.0-SNAPSHOT.jar

    创建函数say_hello2
    create temporary function say_hello2 as 'com.bigdata.hadoop.hive.GenericUDFHello';

    函数的查看与使用同方式一

  • 方式三(永久函数,创建后可以在任意客户端使用,建议使用)
    上传jar到hdfs
    hadoop fs -put hive-1.0-SNAPSHOT.jar /libs

    创建函数say_hello3
    create function say_hello3 as 'com.bigdata.hadoop.hive.GenericUDFHello' using jar 'hdfs://hdpcomprs:9000/libs/hive-1.0-SNAPSHOT.jar';

    注意: 创建完function之后,通过show functions并没有看到我们自定义的函数say_hello3,但是可以使用
    使用函数,效果同上

  • 方法四(永久函数,将自定义函数集成到hive源码中)
    使用这种方式需要修改hive的源代码,集成到hive源码后,hive启动后就可以使用,不用再向hive中注册函数,相当于一个hive的内置函数。如果公司有自己的大数据框架版本,建议使用这种方式。

Hive内置函数和自定义函数的使用的更多相关文章

  1. Hive学内置条件和字符串函数

    https://blog.csdn.net/skywalker_only/article/details/38752003 条件函数 下表为Hive支持的一些条件函数. 返回类型 函数名 描述 T i ...

  2. Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)

    Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数

  3. Hive之函数与自定义函数

    系统自带的函数 1)查看系统自带的函数 hive> show functions; 2)显示自带的函数的用法 hive> desc function upper; 3)详细显示自带的函数的 ...

  4. Python内置的字符串处理函数整理

    Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...

  5. PHP内置的字符串处理函数

    字符串的特点    1.其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4 ...

  6. thinkPHP内置字符串截取msubstr函数用法详解

    作者:陈达辉 字体:[增加 减小] 类型:转载 时间:2016-11-15 我要评论 这篇文章主要介绍了thinkPHP内置字符串截取函数用法,结合实例形式分析了thinkPHP内置的字符串截取函数功 ...

  7. python内置常用高阶函数(列出了5个常用的)

    原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...

  8. jquery (内置遍历数组的函数,事件)

    内置遍历数组的函数: 1. $.map(array, function() { }); 取到数组或者对象array中每一项进行遍历  然后在function中处理: var attr = [1,2,3 ...

  9. MySQL之运算符与函数、自定义函数

    一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 ...

  10. Angular中的内置指令和自定义指令

    NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减 ...

随机推荐

  1. python发送包含html、图片、附件和链接的邮件

    1.smtplib模块的使用 smtplib库用来发送邮件.需要用到的函数如下: 连接到SMTP服务器,参数为SMTP主机和端口: SMTP.connect([host[,port]]) 登录SMTP ...

  2. java5 CyclicBarrier同步工具

    CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此 ...

  3. oracle delete t1;drop table t1;drop table t1 purge

    Truncate tableTruncate table t1;Ddl语言,自动提交:不能回退:回收范围::挪动高水位线:将所有的数据清除,保留表结构:将表缩的最小:保留表的约束和权限. Drop t ...

  4. java中的监听事件

    java监听器实现的类 1.ServletContextListener:对servlet上下文的创建和销毁监听 2.ServletContextAttributeListener:监听servlet ...

  5. Luogu 4069 [SDOI2016]游戏

    BZOJ 4515 树链剖分 + 李超线段树 要求支持区间插入一条线段,然后查询一个区间内的最小值.可以使用李超线段树解决,因为要维护一个区间内的最小值,所以每一个结点再维护一个$res$表示这个区间 ...

  6. Luogu 4284 [SHOI2014]概率充电器

    BZOJ 3566 树形$dp$ + 概率期望. 每一个点的贡献都是$1$,在本题中期望就等于概率. 发现每一个点要通电会在下面三件事中至少发生一件: 1.它自己通电了. 2.它的父亲给它通电了. 3 ...

  7. [转]asp.net使用uploadify上传出现的IO Error问题

    原文链接:http://blog.csdn.net/w3031213101/article/details/6335878 解决方法:1.uploadify控件的自定义size必须调整大小,即属性:s ...

  8. Smarty3——变量修饰器

    变量修饰器可以用于变量, 自定义函数或者字符串. 使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称. 修饰器可能还会有附加的参数以便达到效果. 参数会跟着修饰器名称,用:(冒号)分开. 同 ...

  9. C# Code 非常好的学习博客

    https://ardalis.com/how-to-become-master-writing-c-code

  10. iPhone的home键进果汁了,按起来粘粘的感觉

    解决办法是按住home键转动一下,再用棉签蘸点水或者酒精都行(注意:水不要太多,不能让水渗进去),用棉签按压home 键多转几圈就好了.