Hive监控表的数据量,使用analyze
1、使用方式
analyze TABLE td.pt_pmart_ceo_FIN_TRSF_CTR_SITE_MAP partition (dt) COMPUTE STATISTICS noscan
工作中用到的统计一个表的数据量
# table_counts 查询出传入日期的表的数据量
table_counts=$(hive -e "analyze table ${DB_NAME}.${TABLE_NAME} partition(pt='${P_DATE}') compute statistics;
desc formatted ${DB_NAME}.${TABLE_NAME} partition(pt='${P_DATE}')" | grep numRows | awk '{print $2}')
2、为啥使用:为了统计与分析,他将统计信息存储到metastore中,后续再俩查询的时候就不需要再执行查询计算,可以直接获取
3、适用范围:统计信息支持新建的和现有的表,支持分区表和普通表的统计信息,以及列统计信息。
4、analyz
4.1表统计
行数,大小(字节为单位),文件数
-
hive是默认自动收集统计信息,有hive.stats.autogather配置参数决定,默认是true。但是对于load data 方式是不支持的。(这个是在计算的时候统计出来的,load是将数据直接放在对应的目录下)
-
手动收集。手动收集的指令
ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], …)] COMPUTE STATISTICS [FOR COLUMNS] – (Note: Hive 0.10.0 and later.) [CACHE METADATA] – (Note: Hive 2.1.0 and later.) [NOSCAN];
如果指定了NOSCAN的话,该命令将不会去扫描文件,仅会收集文件数和文件大小的信息
-
查看表的统计信息
desc formatted tableName