【Hive 元数据和真实数据-TAB_COL_STATS记录错误问题】

MySql的元数据以及HDFS上数据的关系

 元数据在DBS和TBLS上 (SD_ID)

1 首先通过hive创建一个表table_test

在hdfs的存储路径会生成相应的表

TBLS 也会更新内容进行记录

2 通过hive插入insert一条数据

 会走一遍MR,数据产生变化后

   TAB_COL_STATS有记录改变(CS_ID)、(TBL_ID) 

3 通过hdfs 直接向hive的warehouse上传数据到表中

  hadoop fs -put test_table01.txt  /user/hive/warehouse/table_test 

(就是通过不用hive对表添加数据)

 使用select * from table_test

 可以查询到数据,但这个时候使用select count(1)

 对表进行查询返回的结果不准确

 因为没有走MR,Hive不知道数据的变化

 desc formatted 表 查询表信息

 numFiles 和numRows 这两个参数

 并不会对表进行记录,所以查询结果都为0

4 如果通过hive的 load data 上传就会记录

 numFiles和numRows的值

 当这两个值不正确或不一致的时候

 在去用count(1)查询的话

 则会通过MR进行纠错

5 如果都不能保证每次上传数据都通过hive

 我们可以通过刷新元数据的方式避免错误

 ANALYZE  TABLE  COMPUTE STATISTICS

 

 

posted @   -YBP杨社长  阅读(187)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示