通过JDBC连接HiveServer2
如果通过JDBC连接HiveServer2时提示:User: hive is not allowed to impersonate hive,需要在core-site.xml中新增如下配置:
hadoop.proxyuser.hive.hosts=*
hadoop.proxyuser.hive.groups=*
红色部分表示可通过代理用户hive操作的主机和用户组,蓝色部分表示所有的hadoop主机及该主机上的hadoop用户组。 连接代码如下:
package com.mengyao.bigdata.utils; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; /**
* HiveJdbcUtil
* core-site.xml配置hive连接用户通过代理操作任意hadoop的用户组及主机
* hadoop.proxyuser.hive.hosts=*
* hadoop.proxyuser.hive.groups=*
* @author mengyao
*
*/
@Component
public class HiveJdbcUtil { private static HiveJdbcUtil hiveJdbcUtil;
@Value("${hive.driverClassName}")
private String driverClassName = "org.apache.hive.jdbc.HiveDriver";
@Value("${hive.url}")
private String url = "jdbc:hive2://h3:10000/default?mapred.job.queue.name=default;hive.mapred.mode=nonstrict";
@Value("${hive.username}")
private String username = "hive";
@Value("${hive.password}")
private String password = "hive";
private Connection connection; /**
* 私有构造函数声明
*/
private HiveJdbcUtil() {
try {
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} /**
* 获取HiveJdbcUtil单例对象
* @return
*/
public static HiveJdbcUtil getInstance() {
if (null == hiveJdbcUtil) {
hiveJdbcUtil = new HiveJdbcUtil();
}
return hiveJdbcUtil;
} /**
* 获取HiveJdbc连接
* @return
*/
public Connection getConnection() {
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
} /**
* 关闭连接
* @param rs
* @param ps
* @param st
* @param connection
*/
public void closeAll(ResultSet rs, PreparedStatement ps, Statement st, Connection connection) {
try {
if (null != rs) {
rs.close();
}
if (null != ps) {
ps.close();
}
if (null != st) {
st.close();
}
if (null != connection) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
HiveJdbcUtil instance = HiveJdbcUtil.getInstance();
Connection connection_ = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
connection_ = instance.getConnection();
ps = connection_.prepareStatement("show databases");
rs = ps.executeQuery();
while(rs.next()) {
System.out.println("==== "+rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
instance.closeAll(rs, ps, null, connection_);
}
} }
User: hive is not allowed to impersonate hive
通过JDBC连接HiveServer2的更多相关文章
- 用Java代码通过JDBC连接Hiveserver2
1.在终端启动hiveserver2#hiveserver2 2.使用beeline连接hive另外打开一个终端,输入如下命令(xavierdb必须是已经存在的数据库)#beeline -u jdbc ...
- (转)CDH中启动的hive,使用jdbc连接hiveServer2时候权限不足解决方案
Hive JDBC:java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.securi ...
- 大数据系列之数据仓库Hive命令使用及JDBC连接
Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...
- 通过JDBC连接hive
hive是大数据技术簇中进行数据仓库应用的基础组件,是其它类似数据仓库应用的对比基准.基础的数据操作我们可以通过脚本方式以hive-client进行处理.若需要开发应用程序,则需要使用hive的jdb ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- 【原创】大叔经验分享(38)beeline连接hiveserver2报错impersonate
beeline连接hiveserver2报错 Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost: ...
- Hive(3)-meta store和hdfs详解,以及JDBC连接Hive
一. Meta Store 使用mysql客户端登录hadoop100的mysql,可以看到库中多了一个metastore 现在尤其要关注这三个表 DBS表,存储的是Hive的数据库 TBLS表,存储 ...
- Java使用JDBC连接Hive
最近一段时间,处理过一个问题,那就是hive jdbc的连接问题,其实也不是大问题,就是url写的不对,导致无法连接.问题在于HiveServer2增加了别的安全验证,导致正常的情况下,传递的参数无法 ...
- Java使用JDBC连接Impala
前段时间,有一个项目在连接Impala的时候,可以测试连接成功,但是查询不出表.但是通过impala-shell的时候,是可以查询出来的,我觉的这种方式查询出来的话,可能和jdbc的方式不一样,因为i ...
随机推荐
- BZOJ 1930 吃豆豆(费用流)
首先这题的两条线不相交的限制可以去掉,因为如果相交的话把点换一换是不影响最终结果的. 剩下的费用流建图是显然的,把点拆为两个,建立超级源点s和源点ss汇点t,连边(s,ss,2,0). 对于每个点,连 ...
- 前端基础:HTML标签(下)
前端基础HTML标签(下) 1.表单 表单的功能主要用于向服务器传输数据,从而实现客户端与Web服务器的交互.表单能够包含input系列标签,比如:文本字段.复选框.单选按钮.提交按钮等:表单还包含t ...
- Python文件传输模块ftplib
ftplib是基于FTP协议实现的一个Python模块 from ftplib import FTP # 创建一个FTP连接对象 ftp = FTP() #[ 当带有参数时,即:ftp = FTP(h ...
- 转:使用 python Matplotlib 库 绘图 及 相关问题
使用 python Matplotlib 库绘图 转:http://blog.csdn.net/daniel_ustc/article/details/9714163 Matplotlib ...
- CentOS 普通用户提升root权限
1.sudo命令可以使普通用户具备root用户的权限,使用前,需要先配置/etc/sudoers文件. #sudoers文件是只读,一般情况下都是用visudo来修改,visudo也一定程度上可以保证 ...
- Spring boot——构建rest风格
前言rest风格严格意义上说不是一种标准,而是一种风格,在如今互联网界,这个风格被广泛用于微服务系统之间的交互. REST简单介绍 REST(Representional State Transfer ...
- 洛谷 P1311 选择客栈 解题报告
P1311 选择客栈 题目描述 丽江河边有 \(n\) 家很有特色的客栈,客栈按照其位置顺序从 \(1\) 到 \(n\) 编号.每家客栈都按照某一种色调进行装饰(总共 \(k\) 种,用整数 \(0 ...
- React组件通信
1.父子通信 父 -> 子 props子 -> 父 回调函数,父组件通过props向子组件传递一个函数,子组件调用函数,父组件在回调函数中用setState改变自身状态 2.跨层级通信 1 ...
- 在 C Level 用 dlopen 使用 第三方的 Shared Library (.so)
http://falldog7.blogspot.com/2013/10/android-c-level-dlopen-shared-library-so.html 在 Android 裡,撰寫 JN ...
- 页面元素的CSS渲染优先级
样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下:(外部样式)External style ...