Hadoop Hiveserver2无法从远程连接获取查询结果

Hadoop Hiveserver2无法从远程连接获取查询结果,hadoop,jdbc,mapreduce,hive,Hadoop,Jdbc,Mapreduce,Hive,嗨,我在尝试使用hiveserver2从远程hadoop集群获取数据时遇到了一个问题 JDBC连接工作的意义是,元数据查询(如show tables)正在工作,甚至需要简单数据列表的查询(如select*from table)也在工作。但是,当在hadoop上执行导致map reduce作业的查询(如select count(*)时从表中,它抛出一个连接异常。我可以在配置单元日志中看到,执行查询时没有任何错误 我用beeline做了同样的尝试,当我使用localhost连接时,它工作了,但是当我

嗨,我在尝试使用hiveserver2从远程hadoop集群获取数据时遇到了一个问题

JDBC连接工作的意义是,元数据查询(如
show tables
)正在工作,甚至需要简单数据列表的查询(如
select*from table
)也在工作。但是,当在hadoop上执行导致map reduce作业的查询(如
select count(*)时从表
中,它抛出一个连接异常。我可以在配置单元日志中看到,执行查询时没有任何错误

我用beeline做了同样的尝试,当我使用
localhost
连接时,它工作了,但是当我使用服务器名连接时,执行就挂起了

我确信我有一些导致此问题的配置属性

我使用的是hadoop 2.0版和Hive 0.12.0版

为了清楚起见,在客户端抛出的错误如下

Exception in thread "main" java.sql.SQLException:   org.apache.thrift.transport.TTransportException
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:203)
at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:300)
at com.nanobi.contentserver.Aatest.HiveJdbcClient.main(HiveJdbcClient.java:57)
就像我说的,服务器或hive.log上没有错误,查询成功执行。 最好的猜测是在获取查询结果时抛出了错误。但无法找到确切的位置

如果需要进一步澄清以了解问题,请告知我


提前感谢

首先启动Hive Server2

配置单元--服务配置单元服务器&


由于您能够获取数据,这意味着您与have的连接工作正常。再次启动配置单元服务器,然后检查

如果这不起作用,请检查hadoop配置属性

正如您所说,“我用beeline做了同样的尝试,当我使用localhost连接时,它工作了,但是当我使用服务器名连接时,执行挂起了。”,检查主机名是否被反映出来


您在哪里使用JDBC连接连接到配置单元服务器?

您是否通过直线运行查询?如果没有,什么?另外,您在本地安装了哪个版本的Thrift?嗨,Eli,在使用“localhost”时,查询在beeline上运行良好或连接url中服务器的IP。即使java客户端在安装配置单元的服务器上执行时也可以工作。问题只出现在进行远程连接时,即使在Hiveserver2控制台上,我也可以看到执行查询时没有任何错误,日志中也没有任何内容。只是Hiveserver2无法获取查询结果。只有在导致hadoop上的mapreduce作业的查询(如“选择计数(*))中才会出现此问题从表中。简单查询数据由hive服务器获取。Thrift随hive-0.12.0安装而来,因此我猜Thrift也是同一版本。如果您需要任何其他详细信息,请告诉我。请澄清,当从直线远程执行MR生成查询时,是否也可以工作?还是仅仅在本地?无论如何,如果您只尝试使用一个库进行远程操作,请尝试另一个库。Pyhs2()易于使用并且工作得非常好。尝试一下,看看是否会出现同样的问题。这个想法是想看看这是不是一个Java软件包的问题,还是一个系统问题。远程执行从直线生成的查询也不起作用