分享

java代码实现jdbc连接hiveserver2,serviceDiscoveryMode=zooKeeper

zixia 发表于 2017-10-26 17:41:43 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 15225
今日通过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”这种格式的连接串。

已有(1)人评论

跳转到指定楼层
zixia 发表于 2017-10-27 18:06:46
自问自答,hive版本问题,把hive的一些Jar包替换为2.1版本的Jars以后就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条