Java 调用Hive 自定义UDF

Hive 具有一个可选的组件叫做HiveServer,它允许通过在一定的端口访问Hive.

将自定义的UDF的jar拷贝到安装的hive服务器中(如 /home/hadoop下)

具体的不啰嗦了,看代码吧!、

package com.hive.client;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveClientUDF {
	private static String driverName = "org.apache.hive.jdbc.HiveDriver";
    private static String url = "jdbc:hive2://192.168.150.162:10000/default";
    private static String sql = "";
    private static ResultSet res;
	public static void main(String[] args) throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub

		 Connection conn = null;
         Class.forName(driverName);
		 //默认使用端口10000, 使用默认数据库,用户名密码默认  hadoop 服务器登录用户名  dh!123456登录密码
         conn = DriverManager.getConnection(url, "hadoop", "dh!123456");
         String tableName = "vehicle_pass";
	   	 Statement stmt = conn.createStatement();
	     //将cityudf.jar加入到HIVE类路径下
		 sql = "add jar /home/hadoop/cityudf.jar";
   	     stmt.execute(sql);
   	     //加入到classpath下
   	     sql = "create temporary function cityudf as 'com.hive.utf.CityUDF'";
   	     stmt.execute(sql);
   	     //使用自定义UDF cityudf
	   	 sql = "select  key,kkNO,cityudf(key) as city from " + tableName;
         System.out.println("Running:" + sql);
	     res = stmt.executeQuery(sql);
	     System.out.println("执行“select * query”运行结果:");
	     while (res.next()) {

	         System.out.println(res.getString(1) + "\t" +":" + res.getString(3));

	      }
	   	  stmt.close();
	   	  conn.close();
	}

}

运行结果:

1522301_20150417103242404_黑A01BCI	:哈尔滨
1522301_20150417103242494_黑A013AA	:哈尔滨
1522301_20150417103242614_黑A01GHI	:哈尔滨
1522301_20150417103242616_黑A01GLJ	:哈尔滨
1522301_20150417103242617_黑A01E5G	:哈尔滨
1522301_20150417103242623_黑A01HDK	:哈尔滨
1522301_20150417103242625_黑A018MM	:哈尔滨
1522301_20150417103242758_黑A015KD	:哈尔滨
时间: 2024-10-28 06:34:50

Java 调用Hive 自定义UDF的相关文章

【甘道夫】开发Hive自定义UDF,生成32位字母数字随机串

引言 曾经认为Hive自带的函数应该可以cover住我的日常所需,心想那些需要使用自定义函数的场景是不是太奇葩,谁知命运弄人,自己还是碰上了. 需求很简单,我需要模拟Oracle中的SYS_GUID()函数,生成一个32位的字母数字随机串. 开发环境:Eclipse+Maven,引入Hive0.13.1的依赖. 欢迎转载,请注明来源: http://blog.csdn.net/u010967382/article/details/41083617 代码 package cn.fulong.big

hadoop安装hive及java调用hive

 1.安装hive 在安装hive前,请确保已经安装好了hadoop,如未安装,请参考centoos 安装hadoop集群进行安装: 1.1.下载,解压 下载hive2.1.1:http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz: 将下载好的hive包解压到/usr/local中 tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/ 进入到/

[Hive]Hive自定义函数UDF

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数 用户自定义函数(user defined function),针对单条记录. 编写一个UDF,需要继承UDF类,并实现evaluate()函数.在查询执行过程中,查询中对应的每个应用到这个函数的地方都会对这个类进行实例化.对于每行输入都会调用到evaluate()函数.而evaluate()函数处理的值会返回给Hive.同时用户是可以重载evaluate方法的.Hive会像Java的方法重载一样,自动选择匹配的

Hive自定义函数(UDF、UDAF)

当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数. UDF 用户自定义函数(user defined function)–针对单条记录. 创建函数流程 1.自定义一个Java类 2.继承UDF类 3.重写evaluate方法 4.打成jar包 6.在hive执行add jar方法 7.在hive执行创建模板函数 8.hql中使用 Demo01: 自定义一个Java类 package UDFDemo; import org.apache.hadoop.hive.

Hive 自定义函数 UDF UDAF UDTF

UDF:用户定义(普通)函数,只对单行数值产生作用: 继承UDF类,添加方法 evaluate() /** * @function 自定义UDF统计最小值 * @author John * */ public class Min extends UDF { public Double evaluate(Double a, Double b) { if (a == null) a = 0.0; if (b == null) b = 0.0; if (a >= b) { return b; } el

hive自定义函数UDF UDTF UDAF

Hive 自定义函数 UDF UDTF UDAF 1.UDF:用户定义(普通)函数,只对单行数值产生作用: UDF只能实现一进一出的操作. 定义udf 计算两个数最小值 public class Min extends UDF { public Double evaluate(Double a, Double b) { if (a == null) a = 0.0; if (b == null) b = 0.0; if (a >= b) { return b; } else { return a

hive自定义函数(UDF)

首先什么是UDF,UDF的全称为user-defined function,用户定义函数,为什么有它的存在呢?有的时候 你要写的查询无法轻松地使用Hive提供的内置函数来表示,通过写UDF,Hive就可以方便地插入用户写的处理代码并在查询中使用它们,相当于在HQL(Hive SQL)中自定义一些函数,首先UDF必须用java语言编写,Hive本身就是用java写的. 编写UDF需要下面两个步骤: 1.继承org.apache.hadoop.hive.ql.UDF 2.实现evaluate函数,这

Alex 的 Hadoop 菜鸟教程: 第11课 Hive的Java调用

声明 本文基于Centos 6.x + CDH 5.x 说到Hive就一定要说到写程序的时候怎么调用Hive.以下我通过一个例子说明如果通过java来调用hive查询数据 数据准备 建立一个文本文件叫 a.txt,内容是 1,terry 2,alex 3,jimmy 4,mike 5,kate 并上传到hive服务器的  /data/ 目录下 JDBC调用方法 加载Driver 加载driver (只说hive2的jdbc) Class.forName("org.apache.hive.jdbc

Hive自定义函数UDF和UDTF

UDF(user defined functions) 用于处理单行数据,并生成单个数据行. PS: l 一个普通UDF必须继承自"org.apache.hadoop.hive.ql.exec.UDF".l 一个普通UDF必须至少实现一个evaluate()方法,evaluate函数支持重载. 主要步骤如下: 步骤1 把以上程序打包成AddDoublesUDF.jar,并上传到HDFS指定目录下(如" /user/hive_examples_jars/" )且创建函