使用Thrift开发Hive CDH5,而不是连接服务器

使用Thrift开发Hive CDH5,而不是连接服务器,hive,kerberos,thrift,Hive,Kerberos,Thrift,我想对hive cdh5的metestore使用thrift。我们平台的大数据是cdh5.5.2,安全性使用Kerberos。例如: getAllDatabases execute(sql) 创建_数据库 get\u数据库(字符串名称) 等等 hive.server2.thrift.port=10000 代码: 公共类HiveClient{ 公共静态最终字符串服务器\u IP=“hadoop7”; 公共静态最终int服务器_端口=10000; 公共静态最终整数超时=30000; 公共静态vo

我想对hive cdh5的metestore使用thrift。我们平台的大数据是cdh5.5.2,安全性使用Kerberos。例如:

  • getAllDatabases
  • execute(sql)
  • 创建_数据库
  • get\u数据库(字符串名称)
等等

hive.server2.thrift.port=10000

代码:

公共类HiveClient{
公共静态最终字符串服务器\u IP=“hadoop7”;
公共静态最终int服务器_端口=10000;
公共静态最终整数超时=30000;
公共静态void main(字符串[]args){
tttransport-transport=null;
试一试{
传输=新的TSocket(服务器IP、服务器端口、超时);
TProtocol协议=新的TBinaryProtocol(传输);
ThriftHive.Client客户端=新ThriftHive.Client(协议);
transport.open();
List databases=client.get_all_databases();
for(字符串数据库:数据库){
System.out.println(数据库);
}
}捕获(例外e){
e、 printStackTrace();
}最后{
if(null!=传输){
transport.close();
}
}
}
}
错误:

org.apache.thrift.transport.ttTransportException:java.net.SocketTimeoutException:读取超时


您的Hiveserver2正在运行吗?默认情况下,您无法通过metastore和metastore used端口9083执行查询。Hive metastore有一个Java API,它封装了节俭噩梦。只需使用它>注意,对于Kerberos auth,要么缓存中有一个有效的票证,
hadoop auth
lib将自动使用它;或者,您可以使用
UserGroupInformation.loginUserFromKeytab()
方法在运行时创建会话票证。您的Hiveserver2是否正在运行?默认情况下,您无法通过metastore和metastore used port 9083执行查询。Hive metastore有一个Java API,用于封装节俭噩梦。只需使用它>注意,对于Kerberos auth,要么缓存中有一个有效的票证,
hadoop auth
lib将自动使用它;或者您可以使用
UserGroupInformation.loginUserFromKeytab()
方法在运行时创建会话票证。