使用Java代码通过JDBC连接只启用Sentry的Impala异常分析
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.问题描述
测试环境描述:
- CM和CDH版本为5.13.1
- 集群只启用了Sentry
- Impala JDBC2.5.42
在使用Java代码访问只启用了Sentry的Impala集群,即集群未启用认证比如LDAP或者Kerberos,会出现获取JDBC连接hang死的现象,具体示例代码如下:
public class SentryOnlyDemo {
private static String JDBC_DRIVER = "com.cloudera.impala.jdbc4.Driver";
private static String CONNECTION_URL ="jdbc:impala://13.229.116.237:21050/default;AuthMech=2;UID=hive;UseSasl=0";
static {
try {
Class.forName(JDBC_DRIVER);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("集群中只启用了Sentry服务通过JDBC访问Impala");
Connection connection = null;
ResultSet rs = null;
PreparedStatement ps = null;
try {
connection = DriverManager.getConnection(CONNECTION_URL);
ps = connection.prepareStatement("show databases");
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.disconnect(connection, rs, ps);
}
}
}
(可左右滑动)
在JDBC连接的URL中指定了AuthMech=2;UID=hive参数后在获取Connection时一直hang住无法正常获取JDBC连接。
2.解决方法
1.将Impala驱动Cloudera_ImpalaJDBC41,并加上参数PWD为空,修改JDBC URL连接为如下:
private static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
private static String CONNECTION_URL =" jdbc:impala://13.229.116.237:21050/default;AuthMech=3;UID=hive;PWD=;UseSasl=0";
(可左右滑动)
2.运行示例代码执行如下
执行成功,获取到JDBC的连接,成功查询到所有的Datebase库。
3.总结
1.在下载Impala JDBC驱动包时里面有Cloudera_ImpalaJDBC4和Cloudera_ImpalaJDBC41两个版本选择41这个版本的。
JDBC_DRIVER ="com.cloudera.impala.jdbc41.Driver"
2.修改JDBC URL为如下即可正常获取JDBC连接
jdbc:impala://13.229.116.237:21050/default;AuthMech=3;UID=hive;PWD=;UseSasl=0
关于这个JDBC连接的异常是一个bug具体可以参考如下jira描述:
https://issues.apache.org/jira/browse/IMPALA-5040
3.驱动包的下载地址为:
https://downloads.cloudera.com/connectors/impala_jdbc_2.5.42.1062.zip
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- 使用 plotly 绘制数据图表
- 基于云计算的 CV 移动交互应用研究:头部姿态估计综述(2)
- 使用 trie 树实现简单的中文分词
- 重磅发布!2017年度 DevOps 现状调查报告中文完整版!
- AI 泡沫前,我们怎么办?中美两国人工智能产业发展全面解读
- 养车记账本小程序开发实例
- 基于图像识别的自动化
- 主从同步中的关键技术解析
- 腾讯织云:DevOps 流水线应用平台践行之路
- 腾讯云 GAME-TECH 沙龙干货回顾:与腾讯云携手出海
- 陈杰:无服务器架构,让云端开发更纯粹
- 王磊:AI 时代物流行业的 OCR 应用
- 张兴华:云端架构助力企业快速成长
- 腾讯云GAME-TECH沙龙干货回顾:腾讯游戏云全球化实践
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PyQT5 实现快捷键复制表格数据的方法示例
- Python爬虫headers处理及网络超时问题解决方案
- python报错: 'list' object has no attribute 'shape'的解决
- Python应用实现双指数函数及拟合代码实例
- 浅谈django不使用restframework自定义接口与使用的区别
- 实例解析php的数据类型
- 实现PHP中session存储及删除变量
- php微信公众号开发之秒杀
- php fread函数使用方法总结
- Yii2框架控制器、路由、Url生成操作示例
- Laravel框架实现调用百度翻译API功能示例
- phpstudy2018升级MySQL5.5为5.7教程(图文)
- laravel实现简单用户权限的示例代码
- tp5(thinkPHP5框架)时间查询操作实例分析
- PHP使Laravel为JSON REST API返回自定义错误的问题