HIVE表count(*)统计异常
1. 问题
在对hive表统计行数时发现如下异常
# count(*)
select count(*) from userimages;
6302
# count(*) + count(result)
select count(*), count(result) from userimages;
3752 3752
2. 排查原因
userimages表 和 HBase表 做了外部关联,查看HBase表数据发现部分rowkey无result列

恍然大悟,因为hive表和habse做了关联,故数据是同步的,那么hbase表中无result列的rowkey 对应到 hive表里就不会有相应的行记录,,但是直接在hive查询select rowkey from userimages时会把所有rowkey统计到,因为hbase的数据是列存的
3. 处理
对无result的rowkey进行 补处理
4. 附hbase和hive关联表建表语句
CREATE EXTERNAL TABLE userimages(
rowkey int,
base64 String,
result String
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":rowkey,image:base64,image:result")
TBLPROPERTIES ("hbase.table.name" = "userimages", "hbase.mapred.output.outputtable" = "userimages");

浙公网安备 33010602011771号