亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

舉一個hive3 jdbc栗子

標簽:
Hbase

以下使用的是kerberos认证模式进行连接

使用过程

导入jdbc

compile group: 'org.apache.hive', name: 'hive-jdbc', version: '3.0.0'

HiveTest.java

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.security.UserGroupInformation;import org.junit.Before;import org.junit.Test;import java.sql.*;public class HiveTest {    private static String url = "jdbc:hive2://storm4.starsriver.cn:2181,storm2.starsriver.cn:2181,storm3.starsriver.cn:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;";    private static String driverName ="org.apache.hive.jdbc.HiveDriver";    private static Connection conn;    private static PreparedStatement ps;    private static ResultSet rs;    @Before
    public void init() throws Exception {
        System.setProperty("java.security.krb5.conf", "/etc/krb5.conf");        final String user = "admin/[email protected]";        final String keyPath = "/etc/security/keytabs/admin.keytab";

        Configuration conf = new Configuration();
        conf.addResource("hive-site.xml");
        conf.set("hbase.zookeeper.quorum", "host4.demo.com,host2.demo.com,host3.demo.com");
        conf.set("hadoop.security.authentication", "kerberos");

        UserGroupInformation.setConfiguration(conf);
        UserGroupInformation.loginUserFromKeytab(user, keyPath);
    }    public Connection getConnnection() {        try {
            Class.forName(driverName);
            conn = DriverManager.getConnection(url);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.exit(1);
        } catch (SQLException e) {
            e.printStackTrace();
        }        return conn;
    }    public PreparedStatement prepare(Connection conn, String sql) {
        PreparedStatement ps = null;        try {
            ps = conn.prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }        return ps;
    }    public void getAll(String tablename) {
        conn=getConnnection();
        String sql="select * from "+tablename;
        System.out.println(sql);        try {
            ps=prepare(conn, sql);
            rs=ps.executeQuery();            int columns=rs.getMetaData().getColumnCount();            while(rs.next()) {                for(int i=1;i<=columns;i++) {
                    System.out.print(rs.getString(i));
                    System.out.print("\t\t");
                }
                System.out.println();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }    @Test
    public void testCount(){
        getAll("TEST_LOG");
    }
}

输出结果

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
select * from TEST_LOG1       lake        
2       lake1       
3       admin       
4       admin       

Process finished with exit code 0



作者:dounine
链接:https://www.jianshu.com/p/312a0feb0354


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消