Error: Could not establish connection to jdbc:hive2://localhost:10000/metastore: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=metastore}) (state=08S01, code=0)
原因: 本地jar版本高于服務器
日通過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”這種格式的連接串。
原因: jar包本地版本過低
7.解決: 使用cdh jar. org.apache.hive:hive-jdbc:1.1.0-cdh5.16.2
uj5u.com熱心網友回復:
謝謝樓主的經驗之談,幫助我很多。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10985.html
上一篇:【計算機網路】【謝希仁第七版】【吞吐量計算的問題】 某學院的以太網交換機有三個介面分別和學院三個系的以太網相連,另外三個介面分別和電子郵件服務器、萬維網服務器
