温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面的文章Fayson介绍了《如何使用java代码通过JDBC连接Hive(附github源码)》、《如何使用java代码通过JDBC连接Impala(附Github源码)》和《如何使用Java访问集成OpenLDAP并启用Sentry的Impala和Hive》,关于Hive和Impala如何启用Sentry可以参考Fayson前面的文章《如何在CDH启用Kerberos的情况下安装及使用Sentry(一)》,《如何在CDH启用Kerberos的情况下安装及使用Sentry(二)》和《如何在CDH未启用认证的情况下安装及使用Sentry》,在集群只启用了Sentry的情况下如何访问?本篇文章主要介绍在集群只启用了Sentry后使用Java通过JDBC访问的区别以及在beeline命令行如何访问。
1.环境准备
2.示例代码编写及说明
3.代码测试
1.CM和CDH版本为5.13.1
2.CentOS6.5
3.Impala JDBC驱动版本2.5.41.1061
1.集群未启用Kerberos
2.集群已启用Sentry
2.环境准备
1.创建Java工程jdbcdemo
创建工程时注意加入Hadoop和Hive JDBC的依赖包
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.5</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
(可左右滑动)
3.示例访问代码
1.Hive示例代码
package com.cloudera.hivejdbc;
import com.cloudera.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* package: com.cloudera.hivejdbc
* describe: 集群中只启用了Sentry服务如何访问Hive
* creat_user: Fayson
* email: htechinfo@163.com
* creat_date: 2018/1/15
* creat_time: 下午8:57
* 公众号:Hadoop实操
*/
public class SentryOnlyDemo {
private static String JDBC_DRIVER = "org.apache.hive.jdbc.HiveDriver";
private static String CONNECTION_URL ="jdbc:hive2://ip-172-31-6-148.fayson.com:10000/";
private static String username = "faysontest";
private static String password = "";
static {
try {
Class.forName(JDBC_DRIVER);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("集群中只启用了Sentry服务访问Hive");
Connection connection = null;
ResultSet rs = null;
PreparedStatement ps = null;
try {
connection = DriverManager.getConnection(CONNECTION_URL, username, password);
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);
}
}
}
(可左右滑动)
由于集群启用了Sentry服务,需要指定用户名连接HiveServer2才能获取指定用户拥有的操作权限,在获取Connection时需要指定用户名,密码可以为空。
4.代码测试
1.Hive测试
使用hive用户测试,hive用户拥有Hive库的所有权限,所以可以看到Hive下面所有的库。
使用faysontest用户测试,faysontest用户只拥有Hive库下的default库操作权限,所以我们可以看到只能获取到default库信息
5.Beeline命令行测试
关于Beeline命令行访问Impala,Fayson在前面的文章也介绍过《如何使用Beeline连接Impala》,这里就不再重复说明。
1.Beeline访问Hive
GitHub源码地址:
https://github.com/javaxsky/cdhproject/jdbcdemo
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有