当前位置:   article > 正文

HDFS数据块损坏导致的Hive数据查询失败案例_hdfs有数据但是hive查不到

hdfs有数据但是hive查不到

hdfs块损坏导致hive执行查询、删除问题时报错。

问题1:hive中无法查询表中的数据信息,但是可以展示表结构等信息。
在hive中建立表,显示表信息均显示成功,部分信息如下:
展示表成功:

show tables;
  • 1

在这里插入图片描述
展示表属性成功:

describe test;
  • 1

在这里插入图片描述
插入表数据失败:

insert into test values("hello");
  • 1

在这里插入图片描述
查询的时候也报错,报错信息如下所示:

select* from test;
  • 1

在这里插入图片描述这可是真的奇怪,冷静下来想想,查看了最开始插入语句的错误信息,发现了以下信息:
在这里插入图片描述

即发现在将数据移入hdfs块的时候执行错误,再结合查询结果的错误信息:
在这里插入图片描述
发现在查询结果的时候无法找到hdfs块来读取数据,因为我们知道hive的数据实际上最终是存储在hdfs上的。结合以上两点,我推测可能是hdfs上的某些块发生了损坏,基于此思路,我便执行了以下命令来检测hdfs块的具体情况:

hdfs fsck /
  • 1

在执行的截图中,查找到以下信息:
在这里插入图片描述
果然,我们可以看到有五个块因为损坏而丢失了。至此,问题的原因找到了,现在我尝试删除这些损失的块,执行以下命令后,即可对根目录下的损失块进行清理。

hdfs fsck / -delete
  • 1

查看执行结果:
在这里插入图片描述
清理结束后,损坏块就被清理干净了。然后我们再次进入hive执行查询命令:

select* from test ;
  • 1

在这里插入图片描述
OK,查询结果成功返回!这说明了我们保存的数据实际上不位于损失块上,另外一方面,假如hdfs上存在损失的块,也将导致我们的查询和插入操作失败。至此,问题被顺利解决。

小总结:以后发生问题时,我们一定要能够准确定位问题,找到问题发生的本质原因,再根据线索逐步靠近问题,从而解决问题。而仔细查看报错的关键信息,并在此基础之上进行有逻辑性的理性思考,则可以加速我们定位问题,并最终找到解决问题的可行方案。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/719443
推荐阅读
相关标签
  

闽ICP备14008679号