Hive:读取超时异常

时间:2017-09-28 16:26:00

标签: scala hadoop hive

问题是当我尝试使用我的应用程序从hive查询smth时,例如     analyze table table_entity compute statisticsselect count(*) from table_entity有时我会遇到这样的例外:java.net.SocketTimeoutException: Read timed out

但是,例如,当我查询show tablesshow tblproperties table_entity时,我没有得到这样的例外。

有没有人遇到过这个问题?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我知道这已经来不及了,但是我陷入了同样的问题,即我们无法删除表,我们向Cloudera提出了一个案例,以下是他们提供的建议:

  

在调查我们观察到的日志和消息堆栈时   在对表“ tableName”的DROP查询执行期间,   查询由于HiveServer2中的“读取超时”而失败   HiveMetastore。这意味着表的放置操作无法执行   在元数据级别获得完整的信息。 (通常-DROP操作   从HMS删除表的元数据详细信息)我们怀疑   该表的元数据不是最新的,可能还有更多   可能导致超时的数据。您能执行一下   请按照以下步骤操作,让我们知道您的反馈意见?

     
      
  1. 登录到Beeline-Hive。

  2.   
  3. 更新Hive Metastore中的分区级别元数据:       MSCK修复表db.table_name DROP PARTITIONS;

  4.   
  5. 计算表的统计信息:       ANALYZE TABLE db.tableName partition(col1,col2)计算统计信息noscan;

  6.   
  7. 首先使用查询删除表的分区:       ALTER TABLE db.tableName DROP [如果存在] PARTITION partition_spec [,PARTITION partition_spec,...]       请根据表的分区相应地替换上述命令中的分区值。

  8.   
  9. 增加Hive Metastore客户端套接字超时。       设置hive.metastore.client.socket.timeout = 1500。       仅此会话将增加套接字超时。因此,请在同一会话中执行下一步#6。

  10.   
  11. 删除表tableName;       删除表db.tableName;

  12.   

尽管这里的问题与“分析表”问题有关,但是此答案旨在涵盖与“读取超时错误”有关的所有其他问题。

我已经展示了我的场景(drop语句),但是这些步骤肯定会在所有导致查询超时异常的查询中提供帮助。

干杯!