min*_*s23 7 hadoop hive hiveql
我在HIVE中创建了一个表格
CREATE TABLE IF NOT EXISTS daily_firstseen_analysis (
firstSeen STRING,
category STRING,
circle STRING,
specId STRING,
language STRING,
osType STRING,
count INT)
PARTITIONED BY (day STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS orc;
Run Code Online (Sandbox Code Playgroud)
count(*)没有给我这个表的正确结果
hive> select count(*) from daily_firstseen_analysis;
OK
75
Time taken: 0.922 seconds, Fetched: 1 row(s)
Run Code Online (Sandbox Code Playgroud)
虽然此表中的行数为959行
hive> select * from daily_firstseen_analysis;
....
Time taken: 0.966 seconds, Fetched: 959 row(s)
Run Code Online (Sandbox Code Playgroud)
它提供了959行的数据
hive> ANALYZE TABLE daily_firstseen_analysis PARTITION(day) COMPUTE STATISTICS noscan;
Partition logdata.daily_firstseen_analysis{day=20140521} stats: [numFiles=6, numRows=70, totalSize=4433, rawDataSize=37202]
Partition logdata.daily_firstseen_analysis{day=20140525} stats: [numFiles=6, numRows=257, totalSize=4937, rawDataSize=136385]
Partition logdata.daily_firstseen_analysis{day=20140523} stats: [numFiles=6, numRows=211, totalSize=5059, rawDataSize=112140]
Partition logdata.daily_firstseen_analysis{day=20140524} stats: [numFiles=6, numRows=280, totalSize=5257, rawDataSize=148808]
Partition logdata.daily_firstseen_analysis{day=20140522} stats: [numFiles=6, numRows=141, totalSize=4848, rawDataSize=74938]
OK
Time taken: 5.098 seconds
Run Code Online (Sandbox Code Playgroud)
我正在使用版本Hive 0.13.0.2.1.2.0-402的配置单元
注意:如果我们多次插入表中,我在count(*)中发现了这个问题.使用单个插入创建的表没有此问题
Nad*_*ine 10
我有同样的问题,并使用ANALYZE修复它.按顺序运行这些命令应该为您提供正确的计数:
hive> ANALYZE TABLE daily_firstseen_analysis PARTITION(day) COMPUTE STATISTICS;
hive> SELECT COUNT(*) FROM daily_firstseen_analysis;
Run Code Online (Sandbox Code Playgroud)
即你必须在计数之前使用analyze命令.你的问题中有一半的答案.