前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HIVE的UDF以及JDBC编程

HIVE的UDF以及JDBC编程

作者头像
云飞扬
发布2018-05-11 12:05:08
1.2K0
发布2018-05-11 12:05:08
举报
文章被收录于专栏:星汉技术星汉技术

HIVE的UDF以及JDBC编程

一、UDF

    UDF是用来对HIVE函数库进行扩展的,可以利用java代码进行自定义的功能需求。

1、步骤

    1.新建java工程。

    2.导入HIVE相关包,jar包在HIVE安装程序的lib目录下,只需要拷贝jar包即可。

    3.创建类继承UDF类。

    4.自己编写一个名为evaluate方法,返回值和参数任意,但是方法名字必须是evluate。

    为了能让mapreduce处理,String要用Text处理。

    5.将写好的类打成jar包,在打jar包的时候可以只打自己写的类,jar包资源可以不打进jar包里。然后上传到linux中。

    5.在hive命令行下,向hive注册UDF:add jar /xxxx/xxxx.jar

    6.为当前UDF起一个名字:create temporary function fname as '类的全路径名';

    之后就可以在hql中使用该自定义函数了。

案例

编写一个简单的小写转大写。

代码语言:javascript
复制
import org.apache.hadoop.hive.ql.exec.UDF;
public class MyUDFDemo extends UDF{
	public String evluate(String str) {
		return str.toUpperCase();
	}
}

二、JDBC编程

1、介绍

    hive实现了jdbc接口,所以可以非常方便用jdbc技术通过java代码操作。

2、步骤

1.开启对外服务

    HIVE默认情况是关闭对外的服务,需要在服务器端开启HiveServer2服务,命令如下:

代码语言:javascript
复制
./hive --service hiveserver2

    这个模式一直开启的情况下,才能连接成功,否则,连接失败。

    可以使用一下命令,是该服务进入后台运行:

代码语言:javascript
复制
[root@hadoop bin]# ./hive --service hiveserver2 &
[1] 6669
[root@hadoop bin]# bg 1
-bash: bg: job 1 already in background

    这样程序进入后台运行,也不影响进行其他操作。

2.java工程

1>创建工程

    创建本地java工程。

2>导入jar包

    导入hive\lib目录下的hive-jdbc-1.2.0-standalone.jar

    导入hadoop-2.7.1\share\hadoop\common下的hadoop-common-2.7.1.jar

3>编写jdbc代码
代码语言:javascript
复制
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try {
			// 1.注册数据库驱动
			Class.forName("org.apache.hive.jdbc.HiveDriver");
			// 2.获取数据连接
			conn = DriverManager.getConnection("jdbc:hive2://192.168.75.150:10000/park", "root", "root");
			// 3.获取传输器对象
			st = conn.createStatement();
			// 4.传输sql执行获取结果集
			rs = st.executeQuery("select * from stu");
			// 5.处理结果集
			while (rs.next()) {
				String str = rs.getString("name");
				System.out.println(str);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 6.关闭连接
			if (rs != null) {
				try {
					rs.close();
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					rs = null;
				}
			}
			if (st != null) {
				try {
					st.close();
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					st = null;
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					conn = null;
				}
			}
		}
	}

    以上需要注意的是jdbc的驱动以及连接地址协议。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HIVE的UDF以及JDBC编程
  • 一、UDF
    • 1、步骤
      • 案例
      • 二、JDBC编程
        • 1、介绍
          • 2、步骤
            • 1.开启对外服务
            • 2.java工程
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档