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
标签:对表,STATS,记录,hive,查询,Hive,TAB,test,数据 From: https://www.cnblogs.com/august888-yang/p/17155027.html