Java使用JDBC连接Hive
最近一段时间,处理过一个问题,那就是hive jdbc的连接问题,其实也不是大问题,就是url写的不对,导致无法连接。问题在于HiveServer2增加了别的安全验证,导致正常的情况下,传递的参数无法使用,hive连接返回用户为空的错误,具体错误不再详谈,今天就说说jdbc的url书写问题。
正常情况下的url:
jdbc:hive2://node1:10000/default
这种情况下,都是默认的,没有权限限制。从这个示例而已看出,URL的基本格式为:
jdbc:hive2://Host:Port[/Schema];Property1=Value;Property2=Value;…
例如,使用用户名和密码连接的URL为:
jdbc:hive2://localhost:10000;AuthMech=3;UID=UserName;PWD=Password
其中,UID默认为hive,AuthMech默认为2。
hive jdbc连接安全机制也分集中情况,分别为无权限、Kerberos、用户名与用户名和密码,安全机制属性为AuthMech,例如:
jdbc:hive2://localhost:10000;AuthMech=0
jdbc:hive2://localhost:10000;AuthMech=1;KrbRealm=EXAMPLE.COM;KrbHostFQDN=hs2.example.com;KrbServiceName=hive
jdbc:hive2://localhost:10000;AuthMech=2;UID=hs2
jdbc:hive2://localhost:10000;AuthMech=3;UID=hs2;PWD=*****
jdbc:hive2://localhost:10000;AuthMech=3;SSL=1;SSLKeyStore=C:\\Users\\bsmith\\Desktop\\keystore.jks;SSLKeyStorePwd=*****;UID=hs2;PWD=*****
以上均为hive jdbc url一般模式,但是,如果需要修改执行sql时的一些hive环境变量,改如何呢?请看:
jdbc:hive2://<host>:<port>/dbName;sess_var_list?hive_conf_list#hive_var_list
这个才是jdbc url完整的格式,其中:
- sess_var_list参数列表:session参数,如principal,serviceDiscoveryMode等等;
- hive_conf_list参数列表:hive的配置参数,hive-site.xml中的配置项;
- hive_var_list参数列表:hive的变量参数;
如果要指定hive执行sql时候的相关参数,即hive-site.xml中的某些变量,就需要增加在?后面,key=value形式,多个用分号分隔。例如:
jdbc:hive2://ubuntu:11000/db2?hive.cli.conf.printheader=true;hive.exec.mode.local.auto.inputbytes.max=9999#stab=salesTable;icol=customerID jdbc:hive2://?hive.cli.conf.printheader=true;hive.exec.mode.local.auto.inputbytes.max=9999#stab=salesTable;icol=customerID jdbc:hive2://ubuntu:11000/db2;user=foo;password=bar jdbc:hive2://server:10001/db;user=foo;password=bar?hive.server2.transport.mode=http;hive.server2.thrift.http.path=hs2 jdbc:hive2://zk01:2181,zk02:2181,zk03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
具体的解析代码在hive-jdbc中,类文件为HiveConnection.java。解析大致流程为:
// Now parse the connection uri with dummy authority
URI jdbcURI = URI.create(uri.substring(URI_JDBC_PREFIX.length()));
// dbname and session settings(获取第一部分参数)
String sessVars = jdbcURI.getPath();
// parse hive conf settings(获取第二部分参数)
String confStr = jdbcURI.getQuery();
// parse hive var settings(获取第三部分参数)
String varStr = jdbcURI.getFragment();
以上就是对Hive Jdbc URL中的各个部分进行说明。
HveServer2官方说明文档:
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC
Java使用JDBC连接Hive的更多相关文章
- java使用JDBC连接hive(使用beeline与hiveserver2)
首先虚拟机上已经安装好hive. 下面是连接hive需要的操作. 一.配置. 1.查找虚拟机的ip 输入 ifconfig 2.配置文件 (1)配置hadoop目录下的core-site.xml和hd ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- 通过JDBC连接hive
hive是大数据技术簇中进行数据仓库应用的基础组件,是其它类似数据仓库应用的对比基准.基础的数据操作我们可以通过脚本方式以hive-client进行处理.若需要开发应用程序,则需要使用hive的jdb ...
- 1、Java通过JDBC操作Hive
0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hive也提供客户端的实现,通过HiveServer或者HiveServer2,客户端可以在不启动CL ...
- Java通过JDBC操作Hive
http://www.cnblogs.com/netbloomy/p/6688670.html 0.概述 使用的都是CLI或者hive –e的方式仅允许使用HiveQL执行查询.更新等操作.然而Hiv ...
- JDBC连接Hive数据库
一.依赖 pom <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- JAVA使用jdbc连接MYSQL简单示例
以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- JAVA通过JDBC连接Oracle数据库详解【转载】
JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...
随机推荐
- python 单引号、双引号和三引号混用
单引号: 当单引号中存在单引号时,内部的单引号需要使用转义字符,要不然就会报错: 当单引号中存在双引号时,双引号可以不用加转义字符,默认双引号为普通的字符,反之亦然. 双引号: 当双引号中存在双引号时 ...
- linux命令详解——ln
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...
- ucore Lab2 实验笔记
ucore Lab2 lab 2 直接执行make qemu-nox会显示 assert 失败: kernel panic at kern/mm/default_pmm.c:277: assertio ...
- 实践周java基础软件开发app之五子棋
五子棋人机对战实践项目 总的任务和目标 完成一个人机对战的五子棋项目,基本效果如下: 第一部分 Java绘图原理 1. 基本概念 像素,坐标 第二部分 绘制棋盘 1. 基本思路 在一个JPan ...
- Spring框架几种创建bean的方式
Spring框架下,Bean的创建和装配非常的灵活,提供了三种主要的方式,并且相互见可以互相看见,也就是你可以随意地采用你喜欢且合适的方式创建Bean,而不用担心他们之间的兼容问题. 一.使用XML显 ...
- CodeForces-585B(BFS)
链接: https://vjudge.net/problem/CodeForces-585B 题意: The mobile application store has a new game calle ...
- C++ fstream 用法
#include <fstream> #include <iostream> main() { int a,b,c,d; std::ifstream infile (" ...
- java文件分片上传,断点续传
文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...
- Codeforces 988D Points and Powers of Two ( 思维 || 二的幂特点 )
题目链接 题意 : 给出坐标轴上的 n 个点的横坐标,要你选出最多的点,使得这些点两两距离是二的幂 ( 特殊情况 : 选出的集合只有一个点也满足条件 ) 分析 : 官方题解已经说的很好了 最关键是是判 ...
- UVa 725 Division (枚举)
题意 : 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a-j恰好为数字0-9的一个排列(可以有前导0),2≤n≤79. 分析 : 最暴力的方法莫过于采用数组存 ...