用java创建UDF,并用于Hive

典型代码如下:

导入UDF类:

import org.apache.hadoop.hive.ql.exec.UDF;

public class UpperCassUDF extends UDF{

  public String evaluate(String input){

    if(input==null){

      return null;

    }

    else{

      return new String(input.toUpperCase());

    }

  }

}

导出jar文件。

接下来的问题是,怎样把这个类添加到hive中呢?

在hive中使用add命令:

add /path/to/UpperCaseUDF.jar


create temporary function ucase as ‘package.name.UpperCaseUDF‘;

验证这个function是否已经成功添加并且功能如预期。

select ucase(column) from table ;

大致就是这么个思路了。

时间: 2024-11-10 18:10:23

用java创建UDF,并用于Hive的相关文章

HiveServer2 的jdbc方式创建udf的修改(add jar 最好不要使用),否则会造成一场 java.sql.SQLException: Error while processing statement: null

自从Hive0.13.0开始,使用HiveServer2 的jdbc方式创建udf的临时函数的方法由: ADD JAR ${HiveUDFJarPath} create TEMPORARY function md5  as 'com.hugedata.hive.udf.codec.UDFMd5'; 改为:     create TEMPORARY function md5  as 'com.hugedata.hive.udf.codec.UDFMd5' USING JAR ${HiveUDFJa

java创建多线程(转载)

转载自:Java创建线程的两个方法 Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法: ◆实现Runnalbe接口,重载Runnalbe接口中的run()方法. 为什么Java要提供两种方法来创建线程呢?它们都有哪些区别?相比而言,哪一种方法更好

Java创建Timestamp的几种方式

1.java创建Timestamp的几种方式 Timestamp time1 = new Timestamp(System.currentTimeMillis()); Timestamp time2 = new Timestamp(new Date().getTime()); Timestamp time3 = new Timestamp(Calendar.getInstance().getTimeInMillis()); //不建议使用 Timestamp time4 = new Timest

gogotester java jar 版 可用于linux mac windows 版本

http://files.cnblogs.com/tmpt/target.zip 转载请注明出处.添加了代码混淆.不过有兴趣可以关注我将要发出的git版本.地址稍后发出. 这个软件,在googleCode上有公开的project下载,但是只有exe版本的 : https://code.google.com/p/gogo-tester 无奈mac,还要下虚拟机,crossover,各种,都不好用.还是写个通用版本的吧. google code上有源码分享,虽然不懂.NET,但是还是能了解个大概的.

java 创建线程

java创建线程有3种方式: (1)继承Thread(2)实现Runnable接口(3)实现Callable接口 1.继承Thead package com.java.thread; public class ThreadClient { public static void main(String[] args) { Print p1 = new Print(); Print p2 = new Print(); p1.start(); p2.start(); } } class Print e

java创建多线程方法之间的区别

我们知道java中创建多线程有两种方法(详见http://blog.csdn.net/cjc211322/article/details/24999163).那么两者有什么区别呢? 一.情形一 code1 /** * ThreadTestDemo.java * @author cjc * */ public class ThreadTestDemo { public static void main(String[] args) { Ticket t=new Ticket(); t.start(

java 创建 HMAC 签名

ava 创建 HMAC 签名 psd素材 1. []ComputopTest.java package com.javaonly.hmac.test; import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import javax

java创建一个简单的小框架frame

import java.awt.*; import javax.swing.*; public class SimpleFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ // 开一个线程 public void run() { SimpleFrame frame = new SimpleFrame(); frame.setTitle("记事本"); //

Java创建(读取)比较复杂的JSON对象

使用Java创建比较复杂的JSON对象,代码如下: 1 import java.util.ArrayList; 2 import java.util.HashMap; 3 import java.util.List; 4 5 import net.sf.json.JSONArray; 6 import net.sf.json.JSONObject; 7 8 public class testJSON { 9 public static void main(String[] args) { 10