Uso di Apache Hive

Apache Hive è un sistema di data warehouse basato su Apache Hadoop e facilita la lettura, la scrittura e la gestione di data set di grandi dimensioni che risiedono nello storage distribuito utilizzando SQL.

Tuning delle prestazioni

Questa è una linea guida generale quando si eseguono query su set di dati più piccoli. La funzione FetchTask offre i seguenti vantaggi nello scenario o nei casi d'uso menzionati.

Quando si utilizzano set di dati più piccoli, la funzione FetchTask è disponibile in scenari specifici o in casi d'uso durante l'esecuzione di query. La funzione può essere controllata utilizzando il parametro "hive.fetch.task.conversion", che è impostato su "more" per impostazione predefinita. FetchTask è un'attività efficiente che accede direttamente al file per fornire risultati, senza avviare un job MapReduce per la query in entrata. La funzione viene applicata quando si selezionano colonne specifiche con un limite, in base a requisiti aggiuntivi quali un'unica origine dati (una tabella o una partizione), nessuna subquery, nessuna aggregazione o distinta e non si applica a viste o join. Viene pertanto utilizzata l'esecuzione di query quali "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'", "select id from t limit 1;", or "select col1 as alias1, col2 from table where partitionkey='somePartitionValue'", FetchTask. Tuttavia, se si imposta "hive.fetch.task.conversion" su un valore minimo, FetchTask verrà applicato quando si esegue "select *" con un limite.

Quando si gestiscono set di dati più grandi e si abilita FetchTask, ottimizzare la dimensione heap del server e del client in base alla dimensione del set di dati quando si attivano query di selezione da strumenti BI, Beeline, tonalità e così via. In alternativa, per eliminare i colli di bottiglia della memoria dal file HiveServer, impostare "hive.fetch.task.conversion" su Nessuno per disabilitare la funzione FetchTask ed eseguire i job MapReduce.

Errore query eliminazione tabella Hive

La query della tabella di eliminazione Hive non riesce con l'errore DELETE from table1.

DELETE from table1;

FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.

Il supporto per l'eliminazione non è disponibile per le tabelle non transazionali o non acide in Hive. Per eliminare una tabella, è necessario creare una tabella transazionale.

esempio:

CREATE TABLE emp12(id int,age int)TBLPROPERTIES ('transactional'='true');