今日通过java代码实现,jdbc连接hiveserver2,如下:
Connection conn = null;
try{
Class.forName("org.apache.hive.jdbc.HiveDriver");
conn = DriverManager.getConnection(jdbcUrl,userName,passWord);
}catch (Exception e){
e.printStackTrace();
}
return conn;
jdbc连接串1为:jdbc:hive2://t-bj-hpc-02:10000/default 可以连接成功;
jdbc连接串2为:jdbc:hive2://t-bj-hpc-02:2181,t-bj-hpc-01:2181,t-bj-hpc-03:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
不能连接成功。
其中,连接串2,通过beeline命令可以连接成功,但是通过上面代码不能连接成功。
我只知道,下面这个串是使用Zookeeper实现了HiveServer2的HA功能(ZooKeeperService Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。
问题是,连接串2,通过beeline命令可以连接成功,但是通过上面代码不能连接成功。报错:
java.lang.NullPointerException at org.apache.thrift.transport.TSocket.open(TSocket.java:170) at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:266) at org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37) at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:204) at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:176) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at cn.teld.bdp.oozie.GetConnection.getConn(GetConnection.java:13) at cn.teld.bdp.oozie.GetConnection.main(GetConnection.java:27)求解答,怎么用连接串2,连接成功?因为我用ambari安装的hive1.2,同时带了hive2.1版本的hiveserver2Interactive。由于某些原因,我必须用hive2.1版本。但是我无法找到hive2.1版本的“jdbc:hive2://t-bj-hpc-02:10000/default”这种格式的连接串。
|