【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 @ 2023-02-25 18:37  -YBP杨社长  阅读(216)  评论(0)    收藏  举报