SparkSQL-HiveSQL统计信息不一致
当以Hive Metastore区执行SQL后,会产生部分统计信息,例如行总数,文件大小等信息,该信息以properties的形式保存在表结构中,在旧版本中也就是spark2x,hive2.x中:
如果用spark 引擎处理的表,对应的统计信息是:
TBLPROPERTIES ( |
对于hive引擎处理的表,对应的统计信息是:
TBLPROPERTIES ( |
两者的字段并不一一对应,但是随着高版本的统计,均统一成了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
扫码手机观看或分享: