2014-06-06 10 views
5

ho creato una tabella in HIVErisultato errato per count (*) nella tabella alveare

conteggio
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; 

(*) non mi sta dando risultato corretto per questa tabella

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

Mentre il numero di righe in questa tabella è 959 righe

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

dà dati con 959 righe

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 

Sto usando alveare con la versione Hive 0.13.0.2.1.2.0-402

NOTA: ho trovato questo problema in count (*) se stiamo inserendo in una tabella in più di una volta . Le tabelle create con un singolo inserto non presentano questo problema

+0

Questo non è possibile. Si può essere sicuri che quando si inserisce/si carica il record nella tabella Hive in quel momento non si stiano eseguendo altre query su quella tabella. –

+0

@MukeshS Ho eseguito sequenzialmente tutte le query di inserimento. Posso vedere tutti i record con l'istruzione select *. Anche analizzare la tabella mi dà tutto bene. L'unico problema è con count (*) su questa tabella. contare (*) su altre tabelle funziona bene nel mio ambiente. Fammi sapere se hai bisogno di maggiori informazioni su questo problema. – minhas23

+0

@MukeshS "Non è possibile". Quindi assicurerai personalmente che l'alveare abbia zero bug? BTW Ho usato l'alveare per due anni in cluster fino a oltre 500 nodi. Direi che l'hive ha un bug o due .. – javadba

risposta

6

Ho avuto lo stesso problema e l'utilizzo di ANALYZE l'ha risolto. L'esecuzione di questi comandi in modo dovrebbe darvi il conteggio corretto:

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

cioè è necessario utilizzare il comando analizzare prima che il conteggio. Hai metà della risposta all'interno della tua domanda.

1

se si dispone di una tabella esterna, rimuovere tutti i file in HDFS e inserire nuovamente nella tabella quindi selezionare conteggio (*) non corretto.