系统自带的函数

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

自定义函数

  1. 1Hive 自带了一些函数,比如:max/min 等,但是数量有限,自己可以通过自定义 UDF来方便的扩展。
  2. 2)当 Hive 提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDFuser-defined function)。

自定义函数的类别:

  1. 1UDFUser-Defined-Function
  2. 一进一出,接受一个参数,返回一个结果
  3. 2UDAFUser-Defined Aggregation Function):聚集函数,多进一出;类似于:count/max/min
  4. 3UDTFUser-Defined Table-Generating Functions):一进多出;如 lateral view explore()

自定义函数的步骤:

  1. 1)继承 org.apache.hadoop.hive.ql.UDF
  2. 2)需要实现 evaluate 函数;evaluate 函数支持重载;
  3. 3)在 hive 的命令行窗口创建函数
  4. a)添加 jar
  5. add jar linux_jar_path
  6. b)创建 function
  7. create [temporary] function [dbname.]function_name AS class_name;

注意

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

案例:

  1. 1)创建一个 java 工程,并创建一个 lib 文件夹
  2. 2)将 hive jar 包解压后,将 apache-hive-1.2.1-bin\lib 文件下的 jar 包都拷贝到 java 工程中。
  3. 3)创建一个类
  4. public class Lower extends UDF {
  5. public String evaluate (final String s) {
  6. if (s == null) {
  7. return null;
  8. }
  9. return s.toString().toLowerCase();
  10. }
  11. }
  12. 4)打成 jar 包上传到服务器/opt/module/jars/udf.jar
  13. 5)将 jar 包添加到 hive classpath
  14. hive (default)> add jar /opt/module/datas/udf.jar;
  15. 6)创建临时函数与开发好的 java class 关联
  16. hive (default)> create temporary function my_lower as "com.atguigu.hive.Lower";
  17. 7)即可在 hql 中使用自定义的函数 strip
  18. hive (default)> select ename, my_lower(ename) lowername from emp;

本博客仅为博主学习总结,感谢各大网络平台的资料。蟹蟹!!

Hive之函数与自定义函数的更多相关文章

  1. PHP函数之自定义函数

    像数学中的函数一样,y=f(x)是函数基本的表达形式,x可看做是参数,y可看做是返回值,即函数定义就是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 自定义函数 函数的 ...

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

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

  3. PHP学习之[第05讲]PHP5.4 循环结构、系统函数和自定义函数

    一.while/for/break/continue: while (expr){ statements } for (expr1:expr2:expr3){ statement } break n  ...

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

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

  5. PHP基础函数、自定义函数以及数组

    2.10 星期五  我们已经真正开始学习PHP 了,今天的主要内容是php基础函数.自定义函数以及数组, 内容有点碎,但是对于初学者来说比较重要,下面是对今天所讲内容的整理:  1 php的基本语法和 ...

  6. Hive函数以及自定义函数讲解(UDF)

    Hive函数介绍HQL内嵌函数只有195个函数(包括操作符,使用命令show functions查看),基本能够胜任基本的hive开发,但是当有较为复杂的需求的时候,可能需要进行定制的HQL函数开发. ...

  7. hive的内置函数和自定义函数

    一.内置函数 1.一般常用函数 .取整函数 round() 当传入第二个参数则为精度 bround() 银行家舍入法:为5时,前一位为偶则舍,奇则进. .向下取整 floor() .向上取整 ceil ...

  8. Hive内置函数和自定义函数的使用

    一.内置函数的使用 查看当前hive版本支持的所有内置函数 show function; 查看某个函数的使用方法及作用,比如查看upper函数 desc function upper; 查看upper ...

  9. 大数据笔记(十六)——Hive的客户端及自定义函数

    一.Hive的Java客户端 JDBC工具类:JDBCUtils.java package demo.jdbc; import java.sql.DriverManager; import java. ...

随机推荐

  1. Sailfish OS 2.1.0 发布,带来重大的架构变化

    Sailfish OS 2.1.0 Iijoki 发布了. Iijoki通过引入Qt 5.6 UI框架.BlueZ 5 蓝牙堆栈和 64 位架构的基本实现,为Sailfish操作系统带来了重大的架构变 ...

  2. 纯CSS3创意loading文字特效

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  3. 使用C#的HttpWebRequest模拟登陆访问人人网

    使用任何语言做模拟登陆或者抓取访问页面,无外乎以下思路: 第一 启用一个web访问会话方法或者实例化一个web访问类,如.net中的HttpWebRequest:第二 模拟POST或者GET方式提交的 ...

  4. java集合框架collection(6)继承结构图

    根据<java编程思想>里面的说法,java集合又叫容器,按照单槽和双槽分为两类,Collection和Map,这两个都是接口. 一.Collection Collection下面又分了三 ...

  5. 解码mmo游戏服务器三:大地图同步(aoi)

    问题引入:aoi(area of interest).在大地图中,玩家只需要关心自己周围的对象变化,而不需要关心距离较远的对象的变化.所以大地图中的数据不需要全部广播,只要同步玩家自己视野范围的消息即 ...

  6. 分享android ADT百度云盘下载地址

    由于android官网经常无法打开,特意把最新的android ADT和SDK放到了百度云盘进行了分享,目录中包含Windows和Macbook两种平台的版本,请自行选择: http://pan.ba ...

  7. 编解码器之战:AV1、HEVC、VP9和VVC

    视频Codec专家Jan Ozer在Streaming Media West上主持了一场开放论坛,邀请百余名观众参与热门Codec的各项优势与短板.本文整理了讨论的主要成果,基本代表了AV1.HEVC ...

  8. Scala 学习之路(二)—— 基本数据类型和运算符

    一.数据类型 1.1 类型支持 Scala 拥有下表所示的数据类型,其中Byte.Short.Int.Long和Char类型统称为整数类型,整数类型加上Float和Double统称为数值类型.Scal ...

  9. java源码解析之String类(一)

    String是我们接触最多的类,无论是学习中还是工作中,基本每天都会和字符串打交道,从字符串本身的各种拼接.切片.变形,再到和其他基本数据类型的转换,几乎无时无刻都在使用它,今天就让我们揭开Strin ...

  10. ZTree简单粗暴快速使用

    是什么:功能强大的树形插件 tip:查资料时痛苦的地方,自我改进 1.没有注明版本:版本不对应导致配置完成后各种无端的错误,特别难查找,运气好能找到英文的解答 2.没有写明配置文件,或者不指明配置文件 ...