INSERT INTO或TRUNCATE后,COUNT(*)返回过时的行数

时间:2014-06-11 08:00:59

标签: hadoop hive hiveql avro

我有一个带有avro架构的表格,我会定期插入推文。

CREATE TABLE tweets
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES ('avro.schema.url'='hdfs:///tweet_schema.avsc');

当我跑步时

SELECT COUNT(*) FROM tweets;

我只得到最后一个INSERT语句添加的行数:

INSERT INTO TABLE tweets SELECT tweet FROM another_table;

同样,如果我跑

TRUNCATE TABLE tweets;

查询计数会在截断前返回表行计数,但是,选择所有内容都不会按预期返回任何内容。

这是预期的行为吗?

如果确实是预期的行为,我应该怎么做以获得总行数?

我正在运行Hive 0.13

1 个答案:

答案 0 :(得分:0)

它变成了一个bug,我报告了它并在0.14.0中得到了解决。您可以在此处HIVE-7213

观看此问题

解决方法是:

set hive.compute.query.using.stats=false;