java通过JDBC驱动连接操作hive实例

python的jaydebeapi连接hive数据库的踩坑血泪史,含环境问题和TypeError: Class org.apache.hive.jdbc.HiveDriver is not found 目前环境: windows10 64位+spyder3 64位+python3.7 64位+python3.10 64位+Jpype1 64位(不同python版本需要下载不同的Jpype1版本)+Java jdk1.8.0_91 64位 背景:想通过python脚本直连数据库取数即做图表分析,但是发现环境问题一堆,每一次的环境调试都是一把心酸泪,以此记录,望能助君跳坑~ 1、一开始系统直接安装的python版本是3.7,但是在spyder中将对应路径下的python.exe设置为python控制器总是不 阅读详情

java通过JDBC驱动连接操作hive实例

原创  2015年10月16日 15:27:12
  • 7341

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.   
  3. ./bin/hive --service hiveserver2  

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

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

上面代码是针对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.   
  5. CLASSPATH=$CLASSPATH:  
  6.   
  7. for i in /home/workspace/hive/lib/*.jar;do  
  8.      CLASSPATH=$CLASSPATH:$i  
  9. done  
  10.   
  11. echo $CLASSPATH  
  12. 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


如何用jdbc连接hive 首先要启动hiveserver 执行命令 nohup hive --service hiveserver & jdbc访问hive与访问普通关系型数据库的流程基本一致 代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Stat 阅读详情

相关推荐

kettle-linux环境单机版部署并测试执行

1.linux环境下jdk部署linux环境新建存放安装包的路径:[root@lx01 ~]# mkdir -p /opt/cm/hadoop 上传jdk的压缩包至该路径:解压压缩包:[root@lx01 hadoop]# ll 总用量 181192 -rw-r--r--. 1 root root 185540433 7月 12 11:23 jdk-8u131-linux-x64.tar.gz...

lisery的博客 5979

Hive-jdbc驱动程序

1.启动hiveserver2服务器,监听端口10000 $>hive --service hiveserver2 & 2.通过beeline命令行连接到hiveserver2 $>beeline //进入beeline命令行(于hive --service beeline) $beeline>!help ...

qq_37668945的博客 1万+

拆解维修指南:当你的大扭矩电动扳手‘罢工’,如何自己动手排查行星齿轮与谐波传动故障?

本文详细解析了大扭矩电动扳手行星齿轮与谐波传动故障的排查与修复方法。从故障初判、拆解工艺到行星齿轮系统检测、谐波传动维护,提供了一套完整的维修指南,帮助用户快速诊断和解决常见问题,延长工具使用寿命。

weixin_42525582的博客 435

java连接hive出现的各种错误

连接hive代码 private static final String driver = "org.apache.hive.jdbc.HiveDriver"; private static final String url = "jdbc:hive://192.168.10.102:10000/fruit"; @Test public void linkHive(){ Connection conn = null; try { C

qq_44724453的博客 4848

招标信息爬取工具

一个能帮你节省大量时间的实用小工具,我自己用了挺久,分享出来给有需要的朋友

qq_56877290的博客 834

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 597

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

1,hive首先要起动远程服务接口,命令: nohup hive –service hiveserver  &  2,java工程中导入相应的需求jar包,列表如下: antlr-runtime-3.0.1.jar hive-exec-0.7.1.jar hive-

豹先生 1万+

SAP S4 MM模块自动记账全流程解析:从评估范围到科目分组的实战配置

本文深入解析SAP S4 MM模块自动记账的全流程,从核心概念评估范围与评估控制入手,详细阐述了评估类、科目分组等关键配置的逻辑关系。通过实战配置步骤,指导如何建立从物料移动(如收货、发料)到自动生成准确财务凭证的完整体系,确保库存价值与总账实时同步,为企业构建可靠的财务业务一体化基石。

weixin_29313547的博客 421

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

基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似WebGUI是通过浏览器访问 Hive 本文主要介绍的就是第二种用户接口,直接进入正题。  1、Hive 安装:

零度的博客专栏 4426

使用cubeMX生成USB HID设备

本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。

专注音频,高效工作,快乐生活! 970

Istio ICA考试之路---2-2

找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。

Q先生 852

java 通过jdbc驱动连接hive操作

1,hive首先要起动远程服务接口,命令: nohup hive –service hiveserver  &  2,java工程中导入相应的需求jar包,列表如下: antlr-runtime-3.0.1.jar hive-exec-0.7.1.jar hive-

随视云平台 1545

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1914

Java通过JDBC操作Hive

连接前请确保hive开了远程服务 连接驱动 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class HiveJDBCUtils { private static String driverName = "org.apache.hive.jdbc.Hi...

amy acker的博客 3504

【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)

在游戏发展史上,有些游戏以其简单而耐玩的特性,深深地烙印在了玩家的记忆中。《黄金矿工》就是其中之一,它曾经在4399等游戏平台上掀起了一股游戏热潮。这款游戏不仅给无数玩家带来了欢乐,还让他们体验到了挖掘金矿的刺激与乐趣。在这个项目中,我们将花费半天的时间,利用Unity引擎,重新打造这款经典小游戏。通过复刻《黄金矿工》,我们不仅是在向童年的回忆致敬,更是在挖掘游戏设计的精髓。在这个过程中,我们将学习如何实现游戏的核心玩法,设计简洁而有效的游戏机制。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2900

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java连接hive(jdbc)

进行以下操作时确保已经启动,mysql,hive创建java项目导入本地驱动包jdbc的代码 创建java项目 导入本地驱动包 驱动包在 F:\qq\qq文件\学习软件\hive-3.1.2-bin\apache-hive-3.1.2-bin\jdbc 第一步 Window–Preferences(预设)–Java–Build Path–User Libraries 点New,输入hive,点...

Pioneer_1的博客 1504

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: Java代码通过JDBC连接Hiveserver2
下一篇: Hive 1.21
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值