通过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 ...
随机推荐
- php中的<?= ?>替换<?php echo ?>
首先修改PHP.ini文件.如下: 1. 将short_open_tag = Off 改成On 开启以后可以使用PHP的短标签:<? ?> <?= $test ?>来代替 &l ...
- Ubuntu 删除多余内核
Ubuntu 删除多余内核 转载▼ 首先查询当前我们使用的是内核是那个版本别删错了. uname -a 第二: 查询系统中装了多少内核 dpkg --get-selections|grep linux ...
- asp.netMVC中实现分页方法
方法一:使用传统的sql语句实现分页, public class UserprintDao如下 /// <summary> /// 取得用户申请记录列表(按分页) /// </ ...
- canvas画布上定位点击位置
两种方法: 1. cvs.onclick = function (e) { if (e.offsetX || e.layerX) { var x = e.offsetX == undefined ? ...
- csrf漏洞攻击手段和影响详解
针对web应用安全中csrf漏洞两种典型的攻击方式:即输入和执行,这种简单模式下的攻击手段以及中途包含确认页面的攻击方法. 图解什么是csrf漏洞 我们先进行约束,比如存在csrf漏洞的网站叫webA ...
- Java线程常用方法详解
线程的常用方法 1.start() : 线程调用该方法将启动线程,使之从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了. 2.run(): Th ...
- CSS3 过渡效果触发时机的问题
像360deg过渡效果,做专题的同学应该是经常做的. <!DOCTYPE html> <html lang="en"> <head> <m ...
- html dom与javascript的关系 -我们用JavaScript对网页(HTML)进行的所有操作都是通过DOM进行的
一,什么是DOM (参考源http://www.cnblogs.com/chaogex/p/3959723.html) DOM是什么 DOM全称为The Document Object Model,应 ...
- CentOS 安装tomcat
1.确保JDK已经安装,版本在1.8以上 2.到网管下载安装 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0. ...
- Javascript基础之-强制类型转换(二)
思考下面这个问题: console.log(+"123"); // 123 console.log(-"123"); // -123 console.log(+ ...