I am getting an error when using the Hive JDBC driver: java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit(BIZ)B
I've seen several messages suggesting that this is a problem due to different thrift jars in hbase and hive. To avoid this problem, I copied the Hive thrift jar (libthrift-0.9.0.jar) into the hbase/lib directory (and verified, with ps, that it's being picked up in the class path.) Alas, I still get the error. Individually, Hadoop, HBase and Hive all run fine. The ps output does not show any other java process using any other = version of libthrift. Here are the versions that I'm using: hadoop: 1.2.1 hbase: 0.94.12 hive: 0.10.0 The code that triggers the problem is simple: Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver"); Connection con = DriverManager.getConnection("jdbc:hive://127.0.0.1:10000/default", "", ""); Statement stmt = con.createStatement(); ResultSet res = stmt.executeQuery("show tables"); // code blows up on next statement while(res.next()) { String str = res.getString(0); System.out.println(str); } res.close(); stmt.close(); con.close(); The abbreviated stack trace looks like: java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit(BIZ)B at org.apache.hadoop.hive.service.ThriftHive$fetchN_args.setNumRowsIsSet(ThriftHive.java:2401) at org.apache.hadoop.hive.service.ThriftHive$fetchN_args.setNumRows(ThriftHive.java:2388) at org.apache.hadoop.hive.service.ThriftHive$Client.send_fetchN(ThriftHive.java:157) at org.apache.hadoop.hive.service.ThriftHive$Client.fetchN(ThriftHive.java:150) at org.apache.hadoop.hive.jdbc.HiveQueryResultSet.next(HiveQueryResultSet.java:138) Any clues as to what I should try next would be appreciated.