问题是当我尝试使用我的应用程序从hive查询smth时,例如
analyze table table_entity compute statistics
或select count(*) from table_entity
有时我会遇到这样的例外:java.net.SocketTimeoutException: Read timed out
但是,例如,当我查询show tables
或show tblproperties table_entity
时,我没有得到这样的例外。
有没有人遇到过这个问题?
提前谢谢。
答案 0 :(得分:0)
我知道这已经来不及了,但是我陷入了同样的问题,即我们无法删除表,我们向Cloudera提出了一个案例,以下是他们提供的建议:
在调查我们观察到的日志和消息堆栈时 在对表“ tableName”的DROP查询执行期间, 查询由于HiveServer2中的“读取超时”而失败 HiveMetastore。这意味着表的放置操作无法执行 在元数据级别获得完整的信息。 (通常-DROP操作 从HMS删除表的元数据详细信息)我们怀疑 该表的元数据不是最新的,可能还有更多 可能导致超时的数据。您能执行一下 请按照以下步骤操作,让我们知道您的反馈意见?
登录到Beeline-Hive。
更新Hive Metastore中的分区级别元数据: MSCK修复表db.table_name DROP PARTITIONS;
计算表的统计信息: ANALYZE TABLE db.tableName partition(col1,col2)计算统计信息noscan;
首先使用查询删除表的分区: ALTER TABLE db.tableName DROP [如果存在] PARTITION partition_spec [,PARTITION partition_spec,...] 请根据表的分区相应地替换上述命令中的分区值。
增加Hive Metastore客户端套接字超时。 设置hive.metastore.client.socket.timeout = 1500。 仅此会话将增加套接字超时。因此,请在同一会话中执行下一步#6。
删除表tableName; 删除表db.tableName;
尽管这里的问题与“分析表”问题有关,但是此答案旨在涵盖与“读取超时错误”有关的所有其他问题。
我已经展示了我的场景(drop语句),但是这些步骤肯定会在所有导致查询超时异常的查询中提供帮助。
干杯!