以下使用的是
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/admin@DEMO.COM"; 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