Hive提供了jdbc驱动,使得我们可以用java代码来连接Hive并进行一些类关系型数据库的sql语句查询等操作。首先,我们必须将Hive的服务,也就是HiveServe打开。在Hive 0.11.0版本前,只有HiveServer服务可用,但是HiveServer本身存在很多问题(比如:安全性、并发性等);针对这些问题,Hive-0.11.0版本后提供了一个全新的服务:HiveServer2,这个很好的解决HiveServer存在的安全性、并发性等问题。

两种服务的启动方式基本一样。如下:

[plain] view plain copy
  1. ./bin/hive --service hiveserver
  2. ./bin/hive --service hiveserver2

启动hiveserver(2)服务后,你就可以通过java代码来连接hiveserver并进行相应的hive操作了。示例代码如下:

[java] view plain copy
  1. package com.aturbo.hadoop;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. public class Hive {
  7. public static void main(String args[])throws Exception{
  8. Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
  9. //String dropSQL = "drop table javabloger";
  10. //String createSQL = "create table javabloger(key int,value string)";
  11. //String insertSQL = "load data local inpath '/home/congcong.ai/hive/kv1.txt'"
  12. //      + "overwrite into table javabloger";
  13. // String querySQL = "select a.* from javabloger a";
  14. String querySQL = "select * from pokes";
  15. Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/default", "", "");
  16. Statement stmt = con.createStatement();
  17. //stmt.executeQuery(dropSQL);
  18. //stmt.executeQuery(createSQL);
  19. //stmt.executeQuery(insertSQL);
  20. ResultSet res = stmt.executeQuery(querySQL);
  21. while(res.next()){
  22. System.out.println("Result: key:"+res.getString(1) +"  –>  value:" +res.getString(2));
  23. }
  24. }
  25. }

上面代码是针对hiveserver的。如果是hiveserver2。那有两处需要修改,具体修改如下:

org.apache.hadoop.hive.jdbc.HiveDriver

改为:

org.apache.hive.jdbc.HiveDriver

jdbc:hive://localhost:10000/default

改为:

jdbc:hive2://localhost:10000/default

其中’localhost’是主机地址,10000是端口后,default是默认的db。

接下来就可以编译、运行上面的代码了。

本人使用的开发环境是linux(centos 7)。没有安装eclipse。所以这里只讲用脚本的方式运行。

1) 首先创建一个文件夹/hive。(本人创建的该文件夹绝对路径:/home/workspace/hive)

2)    在hive下面分别创建三文件夹:src/、classes/、lib/。其中,src保存源码(也就是上面的代码,命名为Hive.java),classes保存编译后的.class文件。lib存放依赖的jar包。

3)    在lib下存放依赖jar包:

4)     编译Hive.java,并保持到/classes目录下:

javac -d ./classes/ ./src/*.java

5)    将/classes/打包成jar,并放在当前路径下(/home/workspace/hive):

[plain] view plain copy
  1. [root@localhost hive]# jar cvf hive.jar -C ./classes/ .
  2. 已添加清单
  3. 正在添加: com/(输入 = 0) (输出 = 0)(存储了 0%)
  4. 正在添加: com/aturbo/(输入 = 0) (输出 = 0)(存储了 0%)
  5. 正在添加: com/aturbo/hadoop/(输入 = 0) (输出 = 0)(存储了 0%)
  6. 正在添加: com/aturbo/hadoop/Hive.class(输入 = 1596) (输出 = 926)(压缩了 41%)

6)创建脚本——run.sh,内容如下:

[plain] view plain copy
  1. #!/bin/bash
  2. HADOOP_HOME=/home/aturbo/hadoop/hadoop-1.2.1
  3. HIVE_HOME=/home/aturbo/hive/hive.1.2.1
  4. CLASSPATH=$CLASSPATH:
  5. for i in /home/workspace/hive/lib/*.jar;do
  6. CLASSPATH=$CLASSPATH:$i
  7. done
  8. echo $CLASSPATH
  9. java -cp $CLASSPATH:/home/workspace/hive/hive.jar com.aturbo.hadoop.Hive

7)给run.sh赋予可执行权限,或直接sourcerun.sh,开始连接hive,并执行代码。如果运行成功,服务端后输出:OK。客户端输出:

[plain] view plain copy
  1. 15/10/16 15:04:23 INFO jdbc.Utils: Supplied authorities: localhost:10000
  2. 15/10/16 15:04:23 INFO jdbc.Utils: Resolved authority: localhost:10000
  3. 15/10/16 15:04:23 INFO jdbc.HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default
  4. Result: key:1  –>  value:wyp
  5. Result: key:2  –>  value:test
  6. Result: key:3  –>  value:zs
  7. Result: key:1  –>  value:wyp
  8. Result: key:2  –>  value:test
  9. Result: key:3  –>  value:zs
  10. Result: key:1  –>  value:wyp
  11. Result: key:2  –>  value:test
  12. Result: key:3  –>  value:zs
  13. Result: key:1  –>  value:wyp
  14. Result: key:2  –>  value:test
  15. Result: key:3  –>  value:zs

至此,整个通过JDBC驱动连接hive并操作的实例就完成了。

注意:

Hive是基于Hadoop的,所以,在连接hive时,务必已经启动了hadoop。具体hadoop的安装启动等,推荐下载阅读

最短路径系列之一从零开始学习Hadoop

此外,如果出现连接

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure。

说明,hive元数据关联的mysql数据库没有启动。

关于hive元数据库的修改,推荐阅读:HIVE完全分布式集群安装过程(元数据库:MySQL)。

其他参考文献:

http://www.aboutyun.com/thread-7461-1-1.html

http://www.aboutyun.com/thread-7083-1-1.html

java通过JDBC驱动连接操作hive实例相关推荐

  1. java 通过jdbc驱动连接hive操作实例

    http://blog.csdn.net/ghychina/article/details/7429577 转自:http://blog.csdn.net/a221133/article/detail ...

  2. Java通过JDBC来连接SqlServer数据库

    Java通过JDBC来连接SqlServer数据库 0.       安装配置Java运行的环境,就不废话了 1.       下载JDBC的驱动程序http://msdn.microsoft.com ...

  3. IntelliJ IDEA+Mysql connecter/j JDBC驱动连接

    在IntelliJ IDEA中用connecter/j jdbc驱动连接MYSQL 以下是解决过程,待整合...有点懒,有空再改 官方文档:https://www.cnblogs.com/cn-chy ...

  4. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  5. 使用jdbc驱动连接mysql_使用jdbc连接mysql数据库

    1.提供mysql的jdbc驱动(我的博客文件里提供了驱动jar包) 2.使用IDEA工具,把jar包添加到项目里(具体步骤如下) 1)打开模块设置 2)选择libraries功能,点击+号,选择ja ...

  6. java的jdbc驱动server_win7下java用jdbc驱动来连接sql server的方法 (转载)

    第一步:下载安装Microsoft SQL Server 2000 Service Pack 4,也就是sql2000的sp4补丁 地址如下: 第二步:下载jdbc的驱动,解压到任一位置中,下载地址: ...

  7. win7下java用jdbc驱动来连接sql server的方法 (转载)

    http://hi.baidu.com/fpbest/blog/item/c9c7ce13df11e0e0c3ce790b.html 第一步:下载安装Microsoft SQL Server 2000 ...

  8. 用Java调用jdbc接口连接MySQL数据库——实现对数据库的增删改查

    使用工具 IDEA2018.2 MySQL5.6 JDK1.8 mysql-connector-java-5.0.8-bin.jar 源码下载地址 码云链接:https://gitee.com/vvc ...

  9. 解决Java中JDBC方式连接不了各类数据库问题

    1.问题描述 某天的某个时刻出现个奇怪的问题,在确认配置无误的情况下,本地程序连不上Oracle数据库,但相同配置PLSQL是可以连上的,并且以此类推,Java开发的相关客户端:DbVisualize ...

最新文章

  1. 百炼智百炼智能获5000万元Pre-A轮融资,深耕智能获客赛道
  2. SAP附件清单的调用
  3. 电脑不读u盘怎么解决_电脑无法识别U盘解决方法
  4. python什么是交换算法_python算法-015将链表元素两两交换元素(交换值、就地翻转)...
  5. VTK:可视化算法之FireFlow
  6. 那些炫酷的特效--QQ空间+VUE
  7. 内存中inode与磁盘中inode
  8. kali php调试,Msfconsole使用总结
  9. java的GUI:个人所得税计算
  10. 国人自研开源项目,一款简单易用的 GitLab 替代品
  11. 【孟子E章】祝大家新年愉快!
  12. 【微信小程序】java游戏后端开发
  13. 【MySQL】 ---- 共享锁、独占锁、行锁、表锁
  14. 2022/11/21-11/26周报
  15. 对称性在第一型曲线积分中的应用
  16. Egret eui.TextInput组件输入后未清掉焦点,微信浏览器切换后台再切回,点击会一直唤醒输入法的Bug
  17. 北京上市公司招聘.net架构师及开发人员
  18. DDPG-终态done对结果的影响探究
  19. 51c语言字符,51单片机C语言教程(九) 语句应用
  20. 520情人节送女朋友的3D相册礼物~html+css+js实现抖音炫酷樱花3D相册(含音乐)

热门文章

  1. 实战 Windows Server 2012 群集共享卷
  2. 雅虎因发送垃圾短信面临50万人集体诉讼
  3. exchange2010 取消OWA内更改密码选项
  4. AppCan的各个js和css的功能说明
  5. html5实现饼图和线图-我们到底能走多远系列(34)
  6. C语言无缘无故提示缺少分号:missing ';' before identifier '...'
  7. ionic serve报错 spawn cmd ENOENT
  8. pycharm如何设置python版本、设置国内pip镜像、添加第三方类库
  9. mysql学习--1.事务
  10. Xshell 登录 AWS CentOS 出现“所选择的用户秘钥未在远程主机上注册“,最终解决办法!...