如何使用java代码通过JDBC访问Sentry环境下的Hive

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 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实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何在Kerberos的CDH使用Sentry实现Spark SQL的权限控制

66320
来自专栏Hadoop实操

如何使用R连接Hive与Impala

继之前的文章讲述如何在Redhat中配置R环境和如何在Redhat中安装R的包及搭建R的私有源后,那我们如何使用R连接CDH集群中的Hive和Impala进行数...

65760
来自专栏Hadoop实操

如何安装Tableau并连接CDH的Hive/Impala

Tableau是桌面系统中的商业智能工具软件,可以基于不同的数据源生成漂亮的图表。Cloudera与Tableau是互相认证的合作伙伴,在Tableau的数据源...

1K90
来自专栏Hadoop实操

如何使用Java访问集成OpenLDAP并启用Sentry的Impala和Hive

在前面的文章Fayson介绍了《如何使用java代码通过JDBC连接Hive(附github源码)》和《如何使用java代码通过JDBC连接Impala(附Gi...

42650
来自专栏牛肉圆粉不加葱

Spark Streaming + Kakfa 编程指北

本文简述如何结合 Spark Streaming 和 Kakfa 来做实时计算。截止目前(2016-03-27)有两种方式:

11340
来自专栏我是攻城师

CDH-Hadoop2.6+ Apache Pig0.15安装记录

37050
来自专栏Hadoop实操

如何通过CM禁用Federation

本文主要讲述如何通过CM禁用Federation。我前面写过两篇关于Federation的文章,可参看《HDFS Federation(联邦)简介》和《如何通过...

14140
来自专栏Hadoop实操

如何通过Cloudera Manager配置Spark1和Spark2的运行环境

大部分用户在使用CDH集群做Spark开发的时候,由于开发环境的JDK版本比CDH集群默认使用的JDK1.7.0_67-cloudera版本新,可能会出现Spa...

86470
来自专栏Hadoop实操

如何使用Cloudera Manager在线为集群减容

在Hadoop集群资源紧张的情况下可以在线扩容来提升集群的计算能力,具体参考Fayson前面的文章《如何在非Kerberos环境下对CDH进行扩容》,那么在集群...

1.4K70
来自专栏Hadoop实操

Python3环境通过JDBC访问非Kerberos环境的Hive

在前面Fayson介绍了在Python2的环境下《如何使用Python Impyla客户端连接Hive和Impala》,本篇文章Fayson主要介绍在Pytho...

25710

扫码关注云+社区

领取腾讯云代金券