自定义UDF
package hive.udf;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* UDF的说明文档
* name是UDF的名称
* value是desc function xx输出的内容
* extended是desc function extended xx输出的内容
*
*/
@Description(name="uppernum",
value="_FUNC_ the input is a num, the output is the UpperNum",
extended="Example:\n" +
"> select uppernum(1) from src \n")
public class UpperNumUDF extends UDF {
/**
* UDF类需要自定义evaluate方法,可以重载多个
*
* evaluate的参数、返回值必须是hive可以序列化的类型
*
* 参数:
* 1)可以是java基本类型、String
* 2)可以是Text
* 3)可以包含多个参数,参数类型也可以不同
* 4)可以是List<?>。如果hive表字段是Array<?>类型的,则是List
*
* 返回值:
* 1)必须有返回值,可以为null
* 2)返回值只能是java基本类型、String、Writable
*
* 可以自定义 UDFMethodResolver来手动匹配方法的执行
*
* @param num
* @return
*/
public String evaluate(int num) {
String str = "ERROR";
switch (num) {
case 0:
str = "零";
break;
case 1:
str = "壹";
break;
case 2:
str = "贰";
break;
case 3:
str = "叁";
break;
case 4:
str = "肆";
break;
case 5:
str = "伍";
break;
default:
break;
}
return str;
}
public String evaluate(String num) {
int intnum = 100;
try {
intnum = Integer.parseInt(num);
} catch (NumberFormatException e) {
}
return evaluate(intnum);
}
}
hive (test)> add jar ${env:HOME}/udf.jar;
hive (test)> create [temporary] function uppernum as 'hive.udf.UpperNumUDF';
hive (test)> select uppernum(2) from dual;
OK
贰
Time taken: 0.118 seconds, Fetched: 1 row(s)
hive (test)> select uppernum(5) from dual;
OK
伍
hive (test)> desc function uppernum;
OK
uppernum the input is a num, the output is the UpperNum
Time taken: 0.138 seconds, Fetched: 1 row(s)
hive (test)> desc function extended uppernum;
OK
uppernum the input is a num, the output is the UpperNum
Example:
> select uppernum(1) from src
Time taken: 0.138 seconds, Fetched: 4 row(s)
hive> drop [temporary] function uppernum;
OK
Time taken: 0.221 seconds
附件列表
自定义UDF的更多相关文章
- Hive UDF IP解析(二):使用geoip2数据库自定义UDF
开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...
- 自定义udf添加一列
//创建得分窗口字典 var dict= new mutable.HashMap[Double, Int]() ){ dict.put(result_Score(i),i) } //自定义Udf函数 ...
- 2.13 Hive中自带Function使用及自定义UDF编程
UDF:User Definition Function 一.function #查看自带的函数 hive (db_hive)> show functions; #查看一个函数的详细用法 hiv ...
- 自定义UDF函数应用异常
自定义UDF函数应用异常 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 ...
- 如何给Apache Pig自定义UDF函数?
近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天 ...
- Hive 自定义UDF操作步骤
Hive 自定义UDF操作步骤 需要自定义类,然后继承UDF 然后在方法envluate()方法里面实现具体的业务逻辑,打包上传到linux(以免出错打包成RunningJar) 一.创建临时函数 ( ...
- 【Spark篇】---SparkSQL中自定义UDF和UDAF,开窗函数的应用
一.前述 SparkSQL中的UDF相当于是1进1出,UDAF相当于是多进一出,类似于聚合函数. 开窗函数一般分组取topn时常用. 二.UDF和UDAF函数 1.UDF函数 java代码: Spar ...
- 047 SparkSQL自定义UDF函数
一:程序部分 1.需求 Double数据类型格式化,可以给定小数点位数 2.程序 package com.scala.it import org.apache.spark.{SparkConf, Sp ...
- Spark(十三)【SparkSQL自定义UDF/UDAF函数】
目录 一.UDF(一进一出) 二.UDAF(多近一出) spark2.X 实现方式 案例 ①继承UserDefinedAggregateFunction,实现其中的方法 ②创建函数对象,注册函数,在s ...
随机推荐
- 基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇
近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识. 一.学习知识: 1.C基本语法 2.GTK+3 API学习 GUI相关知识学习 3.Glade使用及 ...
- Scala的Trait详解
http://article.yeeyan.org/view/178378/358355
- Thrift 基础(C++ rpc )
一.thrift简介 thrift是Facebook开源的一套rpc框架,目前被许多公司使用 我理解的特点 使用IDL语言生成多语言的实现代码,程序员只需要实现自己的业务逻辑 支持序列化和反序列化操作 ...
- 【从0到1学Web前端】CSS定位问题二(float和display的使用) 分类: HTML+CSS 2015-05-28 22:03 812人阅读 评论(1) 收藏
display 属性规定元素应该生成的框的类型. 这个属性用于定义建立布局时元素生成的显示框类型.对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定 ...
- Your Mac is infected with (3) Viruses!
记一次流氓程序的清理 某天我的电脑不幸感染了这么一个病毒
- Apache版本的Hadoop HA集群启动详细步骤【包括Zookeeper、HDFS HA、YARN HA、HBase HA】(图文详解)
不多说,直接上干货! 1.先每台机器的zookeeper启动(bigdata-pro01.kfk.com.bigdata-pro02.kfk.com.bigdata-pro03.kfk.com) 2. ...
- 18-hadoop-weather案例
weather案例, 简单分析每年的前三个月的最高温即可, 使用自定义的分组和排序 设计分析 设定多个reduce 每年的数据都很多,如果按照默认情况处理,统计性能是非常慢(因为默认只有一个reduc ...
- springboot+cloud 学习(一)高可用服务注册中心(Eureka)
先说说Eureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringClo ...
- GCD之Group
1.问题的提出 在上面的GCD之全局.主线程中介绍了dispatch_get_global_queue.dispatch_get_main_queue的用法,可以看到最后执行的时间在10s 左右,在上 ...
- Java中异常发生时代码执行流程
异常与错误: 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员) ...