自定义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;OKuppernum the input is a num, the output is the UpperNumTime taken: 0.138 seconds, Fetched: 1 row(s)hive (test)> desc function extended uppernum;OKuppernum the input is a num, the output is the UpperNumExample:> select uppernum(1) from srcTime taken: 0.138 seconds, Fetched: 4 row(s)
hive> drop [temporary] function uppernum;OKTime 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 ...
随机推荐
- ElasticSearch 6.x 父子文档[join]分析
ES6.0以后,索引的type只能有一个,使得父子结构变的不那么清晰,毕竟对于java开发者来说,index->db,type->table的结构比较容易理解. 按照官方的说明,之前一个索 ...
- C# 字符串操作基本过程(Equals、Compare、EndsWith等处理方法)
本文只介绍了比较方法,但是EndsWith,IndexOf等方法均采用相同的过程,先设置CultureInfo(一般情况下调用当前线程的CultureInfo,该语言文化可以通过控制面板设置),然后调 ...
- ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context
封装Redis发布订阅时,SUB时,又想探测具体Channel的状态,于是执行PUBSUB CHNNALES命令,报 ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / ...
- Json.Net 在.Net Core 2.0 中序列化DataSet 问题
使用Asp.Net Core中自带的版本10.0.1 生成一个简单的DataSet DataSet ds2 = new DataSet(); DataTable table = new DataTab ...
- Java NIO系列教程(六) Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 下面是 ...
- Jni如何传递并且修改两个基础参数
最近在开发jni时,需要返回多个参数给java.这个过程中,碰到了一些问题,值得探讨一下. 具体是这样,jni方法jni_do_something作了底层处理后,得出两个int数据,需要将他们的值 ...
- little eye 精简版
https://github.com/salomon1184/PerfMan/ 代码没整理,特乱 来源于一次聊天,一天半做完,考虑继续深做
- Java中数据类型转换大全(个人总结)
一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...
- vue-cli watch/timer
watch 监听函数 data:{ letter:'' }, watch:{ letter(){ xxxxxx } }, timer data(){ return{ timer:null } }, h ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 热更新Live2D
live2D是一个很强大的2D动画组件.我们可以使用AS3脚本对它进行热更新. live2D在Unity中的使用请看这里: 如何获取Live2D 总得来说,我们可以先去live2D官网下载它的Unit ...