栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive jdbc/metastore客户端方式连接开启kerberos的hive集群api

hive jdbc/metastore客户端方式连接开启kerberos的hive集群api

pom依赖

    org.apache.hive
    hive-jdbc
    3.1.2

    org.apache.hive
    hive-metastore
    3.1.2
    
        
            org.mortbay.jetty
            *
        
        
            org.eclipse.jetty
            *
        
        
            com.google.guava
            guava
        
    

通过jdbc方式查询hive元数据信息
package kerberos;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import java.io.IOException;
import java.sql.*;

public class HiveJdbcKerberosApi {

    public static void main(String[] args) throws SQLException, IOException, ClassNotFoundException {

        System.setProperty("java.security.krb5.conf", "D:/cy/keytab/krb5.conf");
//        System.setProperty("sun.security.krb5.debug", "true");
//        System.setProperty("HADOOP_JAAS_DEBUG","true");

        String jdbcUrl="jdbc:hive2://henghe-33:10000/default;principal=henghe/henghe-33@HENGHE.COM;?hive.client.keytab.file=D:/cy/keytab/henghe.tenant.keytab;" +
                "hive.client.kerberos.principal=henghe@HENGHE.COM";

        Configuration configuration = new Configuration();
        configuration.set("hadoop.security.authentication", "kerberos");

        configuration.set("hive.metastore.uris", "thrift://henghe-33:9083");

        UserGroupInformation.setConfiguration(configuration);
        UserGroupInformation.loginUserFromKeytab("henghe@HENGHE.COM", "D:/cy/keytab/henghe.tenant.keytab");

        Class.forName("org.apache.hive.jdbc.HiveDriver");


//        testHiveDatabase(jdbcUrl);
//
        testHiveTable(jdbcUrl,"test");


       testHiveColumn(jdbcUrl,"test","default");
    }


    public static void testHiveTable(String jdbcUrl,String databaseName) throws SQLException {
        Connection connection=
                DriverManager.getConnection(jdbcUrl);

        //获取metadata
        DatabasemetaData metaData = connection.getmetaData();

        ResultSet rs2 =
                metaData.getTables(databaseName, databaseName, null, new String[]{"TABLE"});

        while (rs2.next()) {
          String tableName=rs2.getString("TABLE_NAME");
          System.out.println("table------"+tableName);
        }
    }


    public static void testHiveDatabase(String jdbcUrl) throws SQLException {
        Connection connection=
                DriverManager.getConnection(jdbcUrl);

        //获取metadata
        DatabasemetaData metaData = connection.getmetaData();
        //创建一个Statement对象
        Statement stmt = connection.createStatement();
        //检索数据
        ResultSet rs = stmt.executeQuery("show databases");
//        ResultSet rs1 = metaData.getCatalogs();
        while(rs.next()) {
            System.out.print("databases----"+rs.getString(1));
            System.out.println();
        }
    }


    public static void testHiveColumn(String jdbcUrl,String tableName,String databaseName) throws SQLException {
        Connection connection=
                DriverManager.getConnection(jdbcUrl);

        //获取metadata
        DatabasemetaData metaData = connection.getmetaData();
        //创建一个Statement对象
        ResultSet rs2 =
                metaData.getColumns("default", "default", "test",null);

        while (rs2.next()) {
            String columnName=rs2.getString("COLUMN_NAME");
            String remark=rs2.getString("REMARKS");
            Integer digits=rs2.getInt("DECIMAL_DIGITS");
            System.out.println("column---"+columnName);
            System.out.println("remarks---"+remark);
            System.out.println("digit---"+digits);
            System.out.println("MaxLength--"+rs2.getInt("COLUMN_SIZE"));
            System.out.println("TYPE_NAME--"+rs2.getString("TYPE_NAME"));
            System.out.println("auto---"+rs2.getString("is_auto_increment"));
            System.out.println("index--"+rs2.getInt("ORDINAL_POSITION"));
        }
    }

}
通过mestoreClient获取hive元数据信息
package kerberos;

import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.HivemetaStoreClient;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.thrift.TException;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public class HiveKerberosApi {

    private static final String USER_NAME = "user.name";
    // Some Hive metastore properties

    public static void  main(String[] args){
        HiveKerberosApi test=new HiveKerberosApi();
        try {
            test.testHiveColumn();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void testHiveColumn() throws TException {

//        System.setProperty("java.security.krb5.conf", "D:\kerberos\krb5.conf");
        System.setProperty("java.security.krb5.conf", "D:/cy/keytab/krb5.conf");
        System.setProperty("sun.security.krb5.debug", "true");
        System.setProperty("HADOOP_JAAS_DEBUG","true");


        HiveConf conf=new HiveConf(this.getClass());
//        conf.set("hive.metastore.uris", "thrift://henghe-131:9083");
        conf.set("hive.metastore.uris", "thrift://henghe-33:9083");
        conf.set("hadoop.security.authentication", "kerberos");
        //todo 默认为true
        conf.set("hive.metastore.execute.setugi","true");
        conf.set("hive.security.authorization.enabled", "false");
        conf.set("hive.metastore.sasl.enabled","true");
        conf.set("hive.metastore.kerberos.principal", "henghe/henghe-33@HENGHE.COM");
        conf.set("hive.server2.authentication.kerberos.principal","henghe/henghe-33@HENGHE.COM");
        UserGroupInformation.setConfiguration(conf);
        try {
            UserGroupInformation.loginUserFromKeytab("henghe@HENGHE.COM", "D:/cy/keytab/henghe.tenant.keytab");
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        HivemetaStoreClient client=new HivemetaStoreClient(conf);
        List aDefault = client.getAllDatabases();
        System.out.println(aDefault.get(0));
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号