jdbc连接hive简单代码(带kerberos认证)像吃饭一样简单

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.thrift.TException;

import java.sql.*;

public class Test {

    public static void main(String[] args) throws Exception {
        // 解决windows中执行可能出现读不到krb5配置文件的问题
//        System.setProperty("java.security.krb5.conf", "krb5.conf");
        // 解决Linux中执行可能出现读不到krb5配置文件的问题
        System.setProperty("java.security.krb5.conf", "/etc/krb5.conf");
        //详细报错信息
        System.setProperty("sun.security.krb5.debug", "true");
        // 解决windows中执行可能出现找不到HADOOP_HOME或hadoop.home.dir问题
//        System.setProperty("hadoop.home.dir", "C:\\Program Files\\winutils-master\\hadoop-2.8.3");
        // Kerberos认证
        Configuration configuration = new Configuration();
        configuration.set("hadoop.security.authentication", "Kerberos");
        configuration.set("keytab.file" , "/etc/hive/conf/hive.keytab" );
        configuration.set("kerberos.principal" , "hive/[email protected]" );
        UserGroupInformation.setConfiguration(configuration);
        UserGroupInformation.loginUserFromKeytab("hive/[email protected]", "/etc/hive/conf/hive.keytab");
        // 创建hive连接
        Connection connection = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try {
            Class.forName("org.apache.hive.jdbc.HiveDriver");
            connection = DriverManager.getConnection("jdbc:hive2://192.168.xxx.xxx:10000/数据库名;principal=hive/[email protected]","用户名","密码");
            if (null != connection) {
                ps = connection.prepareStatement("show tables");
                rs = ps.executeQuery();
                while (rs.next()) {
                    System.out.println(rs.getString(1));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (connection != null) {
                connection.close();
            }
        }
    }
}

 

你可能感兴趣的:(数据库链接,大数据)