2014-06-06 13 views
5

ich eine Tabelle in HIVE erstellt habefalsches Ergebnis für count (*) in hive Tabelle

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; 

count (*) gibt mir nicht korrektes Ergebnis für diese Tabelle

hive> select count(*) from daily_firstseen_analysis; 
OK 
75 
Time taken: 0.922 seconds, Fetched: 1 row(s) 

Während die Zahl in dieser Tabelle Zeilen 959 Zeilen

hive> select * from daily_firstseen_analysis; 
.... 
Time taken: 0.966 seconds, Fetched: 959 row(s) 

es gibt Daten mit 959 Zeilen

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 

Ich verwende hive mit Version Hive 0.13.0.2.1.2.0-402

HINWEIS: fand ich dieses Problem in count (*), wenn wir in eine Tabelle in mehr als einmal einfügen . Tabellen, die mit einzelnen Einfügung erstellt wurden, haben dieses Problem nicht

+0

Das ist nicht möglich. Können Sie sicherstellen, dass beim Einfügen/Laden von Datensätzen in der Hive-Tabelle zu diesem Zeitpunkt keine andere Abfrage für diese Tabelle ausgeführt wird. –

+0

@MukeshS Ich habe alle Insert-Abfragen sequenziell ausgeführt. Ich kann alle Datensätze mit Select * -Anweisung sehen. Selbst Analysetabelle gib mir alles in Ordnung. Das einzige Problem ist mit count (*) in dieser Tabelle. count (*) auf anderen Tabellen funktioniert in meiner Umgebung einwandfrei. Lassen Sie es mich wissen, wenn Sie weitere Informationen zu diesem Problem benötigen. – minhas23

+0

@MukeshS "Das ist nicht möglich". Sie werden also persönlich dafür bürgen, dass der Bienenstock keine Fehler hat? Übrigens verwende ich Bienenstock seit zwei Jahren in Clustern bis über 500 Knoten. Ich würde sagen, Bienenstock hat einen Fehler oder zwei .. – javadba

Antwort

6

Ich hatte das gleiche Problem, und mit ANALYSE behoben. Das Ausführen dieser Befehle in der richtigen Reihenfolge sollte Ihnen die richtige Anzahl geben:

hive> ANALYZE TABLE daily_firstseen_analysis PARTITION(day) COMPUTE STATISTICS; 
hive> SELECT COUNT(*) FROM daily_firstseen_analysis; 

d. H. Sie müssen den Analysebefehl vor der Zählung verwenden. Sie haben die Hälfte der Antwort in Ihrer Frage.

1

Wenn Sie eine externe Tabelle haben, entfernen Sie alle Dateien in HDFS, fügen Sie sie erneut in die Tabelle ein, und wählen Sie dann count (*).