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");
posted @ 2022-01-10 16:34  钱塘江畔  阅读(496)  评论(0)    收藏  举报