HIVE select count (*) non nullo restituisce un valore superiore a select count (*)

Attualmente sto facendo un po ‘di esplorazione dei dati con Hive e non posso spiegare il seguente comportamento. Supponiamo di avere una tabella (denominata mytable) con un campo master_id.

Quando conto il numero di righe che ottengo

select count(*) as c from mytable c 1129563 

Se voglio contare il numero di righe con un master_id non nullo, ottengo un numero più alto

 select count(*) as c from mytable where master_id is not null c 1134041 

Inoltre, il master_id sembra non essere mai nullo.

 select count(*) as c from mytable where master_id is null c 0 

Non riesco a spiegare come aggiungere un’istruzione where può aumentare il numero di righe alla fine. Qualcuno ha qualche suggerimento per spiegare questo comportamento?

    Grazie

    Molto probabilmente la tua query senza dove sta usando le statistiche a causa di questo parametro è impostata:

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

    Prova a impostarlo come falso ed eseguire di nuovo.

    In alternativa puoi calcolare le statistiche sul tavolo. Vedi ANALYZE TABLE SINTASSI

    Inoltre è ansible raccogliere statistiche durante INSERT OVERWRITE automaticamente:

     set hive.stats.autogather=true;