当以Hive Metastore区执行SQL后,会产生部分统计信息,例如行总数,文件大小等信息,该信息以properties的形式保存在表结构中,在旧版本中也就是spark2x,hive2.x中:
如果用spark 引擎处理的表,对应的统计信息是:

TBLPROPERTIES (
'numFiles'='1',
'numRows'='-1',
'rawDataSize'='-1',
'spark.sql.statistics.numRows'='111111',
'spark.sql.statistics.totalSize'='11111',
'totalSize'='111111',

对于hive引擎处理的表,对应的统计信息是:

TBLPROPERTIES ( 
'numFiles'='1',
'numRows'='1111111',
'rawDataSize'='1111111',

两者的字段并不一一对应,但是随着高版本的统计,均统一成了hms标准的定义,也就是org.apache.hadoop.hive.common.StatsSetupConst中定义的结构体。

Spark在org.apache.spark.sql.StatisticsCollectionTestBase

同时有个点是hive metastore会自行维护一个transient_lastDdlTime字段,看名字是DDL语句,实际上发生数据的变更会被记录,这个字段代表的最后一次更新修改时间。

更多可以看:https://cwiki.apache.org/confluence/display/Hive/StatsDev


扫码手机观看或分享: