Introduzione a HiveQL
HiveQL, comunemente noto come HQL, è un linguaggio di query simile a SQL per l'elaborazione di grandi blocchi di dati dall'ambiente Hadoop. Originariamente sviluppato da Facebook intorno al 2007, Hive è diventato in seguito un progetto Apache open source. Oggigiorno le query hive con sintassi simile a SQL sono diventate popolari tra gli analisti di dati. HiveQL che utilizza HDFS per l'archiviazione e MapReduce per l'elaborazione aiuta a ricavare informazioni dettagliate per gli utenti di big data con un'esperienza di codifica minima. Vari altri motori di calcolo distribuito come Apache Tez e Apache Spark possono essere utilizzati con HiveQL per un'elaborazione più rapida dell'analisi dei dati su larga scala. I vari modi di utilizzare HiveQL sono: CLI (Command Line Interface), prodotti commerciali come Karmasphere, la cloud open source Hue e Qubole di Cloudera.
Funzionamento di HiveQL
Hive fornisce un dialetto simile a SQL per la manipolazione dei dati, eliminando la necessità per noi di scrivere lavori MapReduce di basso livello per recuperare i dati (tramite Mapper) e aggregare i risultati finali (tramite Moduli riduttore).
-
Esecuzione della query Hive
I passaggi coinvolti nell'esecuzione di una query Hive sono:
- L'interfaccia Hive (tramite CLI o Web UI) invia la query al Driver (che è JDBC, ODBC o Thrift Server) per compilare, ottimizzare ed eseguire. Controlla la query attraverso un compilatore per la sintassi e il piano di esecuzione.
- Il compilatore invia una richiesta a Metastore e riceve Metadata come risposta.
- Il compilatore comunica nuovamente il piano di esecuzione al driver, che lo invia ulteriormente al motore di esecuzione.
- Il motore di esecuzione interagisce con Job Tracker, che è il nodo nome per completare il lavoro.
- Parallelamente, anche il motore di esecuzione esegue l'operazione Metadata.
- Il nodo Nome esegue il lavoro dal tracker attività o dai nodi Dati.
- Risultati condivisi con il motore di esecuzione, che vengono quindi visualizzati nell'interfaccia tramite il driver.
-
Ottimizzazione delle query
Ottimizzazione di HiveQL per una migliore ottimizzazione delle query. Utilizzando i comandi impostati di seguito, possiamo ignorare le configurazioni predefinite e consentire l'esecuzione di query più veloce.
1 SET hive.execution.engine = tez
Per impostazione predefinita, il motore di esecuzione è impostato su Mapreduce, ma possiamo impostarlo esplicitamente su tez (solo per Hadoop 2) o Spark (per Hive 1.1. 0 in poi).
2 SET hive.mapred.mode = unstrict
Questo è per il partizionamento dinamico che è utile per caricare grandi set di dati. Tuttavia, il partizionamento statico è impostato come predefinito, che avviene in modalità "rigorosa".
3 SET hive.vectorized.execution = true
set hive.vectorized.execution.enabled = true
L'esecuzione di query vettoriale consente di eseguire operazioni come –aggregate, filtri o join in batch di 1024 righe anziché singole righe alla volta.
4 SET hive.auto.convert.join = true
Mentre si unisce un set di dati di grandi dimensioni con un set di dati molto piccolo, i join di mappe sono più efficienti e possono essere impostati utilizzando il comando sopra.
5 SET hive.exec.parallel = true
I lavori MapReduce vengono eseguiti in parallelo in Hadoop. A volte, se le query non dipendono l'una dall'altra, l'esecuzione parallela può essere favorita portando a una migliore gestione della memoria.
6 SET hive.exec.compress.output = true
Ciò consente di archiviare l'output finale in HDFS in un formato compresso.
7 SET hive.exec.compress.output = true
Ciò consente di archiviare l'output finale in HDFS in un formato compresso.
Funzionalità di HiveQL
- Essendo un linguaggio di alto livello, le query Hive vengono convertite implicitamente in lavori di riduzione della mappa o DAG complessi (grafici aciclici diretti). Utilizzando la parola chiave "Spiega" prima della query, è possibile ottenere il piano di query.
- Esecuzione più rapida delle query utilizzando l'archiviazione dei metadati in un formato RDMS e replica i dati, facilitando il recupero in caso di perdita.
- L'indicizzazione bitmap viene eseguita per accelerare le query.
- Migliora le prestazioni consentendo il partizionamento dei dati.
- Hive può elaborare diversi tipi di file compressi, risparmiando così spazio su disco.
- Per manipolare stringhe, numeri interi o date, HiveQL supporta l'estensione delle funzioni definite dall'utente (UDF), per risolvere problemi non supportati dagli UDF incorporati.
- Fornisce una gamma di API aggiuntive per creare un motore di query personalizzato.
- Sono supportati diversi formati di file come Textfile, Sequencefile, ORC (Optimized Row Columnar), RCFile, Avro e Parquet. Il formato di file ORC è più adatto per migliorare le prestazioni della query in quanto archivia i dati nel modo più ottimizzato, portando a un'esecuzione più rapida della query.
- È un efficiente strumento di analisi dei dati e ETL per grandi set di dati 10. Query facili da scrivere in quanto simili a SQL. I comandi DDL (Data definition language) in hive vengono utilizzati per specificare e modificare la struttura del database o delle tabelle in hive. Questi comandi sono: trascina, crea, tronca, modifica, mostra o descrivi.
limitazioni
- Le query Hive hanno una latenza più elevata in quanto Hadoop è un sistema orientato al batch.
- Le query secondarie o nidificate non sono supportate.
- L'operazione di aggiornamento, eliminazione o inserimento non può essere eseguita a livello di record.
- L'elaborazione o l'interrogazione dei dati in tempo reale non viene offerta tramite Hive Scope di HQL.
Con petabyte di dati, che vanno da miliardi a trilioni di record, HiveQL ha un ampio raggio di azione per i professionisti dei big data.
Ambito di HiveQL
Di seguito sono riportati i modi in cui l'ambito di HiveQL si amplia e serve meglio allo scopo di analizzare dati generici generati dagli utenti ogni giorno.
Sicurezza: oltre all'elaborazione di dati di grandi dimensioni, Hive fornisce sicurezza dei dati. Questa attività è complessa per il sistema distribuito, poiché sono necessari più componenti per comunicare tra loro. Il supporto dell'autorizzazione Kerberos consente l'autenticazione tra client e server.
Blocco: tradizionalmente, Hive non dispone del blocco su righe, colonne o query. Hive può sfruttare Apache Zookeeper per bloccare il supporto.
Gestione del flusso di lavoro : Apache Oozie è uno scheduler del flusso di lavoro per automatizzare varie query HiveQL da eseguire in sequenza o in parallelo.
Visualizzazione: il notebook Zeppelin è un notebook basato sul Web che consente l'analisi interattiva dei dati. Supporta Hive e Spark per la visualizzazione e la collaborazione dei dati.
Conclusione
HiveQL è ampiamente utilizzato nelle organizzazioni per risolvere casi d'uso complessi. Tenendo presente le caratteristiche e le limitazioni offerte dalla lingua, il linguaggio di query Hive viene utilizzato nei servizi di telecomunicazione, assistenza sanitaria, vendita al dettaglio, bancario e finanziario e persino nel sistema di valutazione climatica del NASA Test Propulsion Laboratory. Facilità di scrittura di SQL come query e comandi per una più ampia accettazione. La crescente opportunità di lavoro in questo campo attira più freschi e professionisti di diversi settori per acquisire esperienza pratica e conoscenze sul campo.
Articoli consigliati
Questa è una guida a HiveQL. Qui discutiamo l'introduzione a HiveQL, l'ottimizzazione delle query e i suoi limiti e funzionalità. Puoi anche consultare i nostri articoli correlati per saperne di più -
- Che cosa sono i tipi di dati Hive?
- Alternative alveare | Scopri le caratteristiche
- Componenti principali dei comandi Hive
- Le 10 migliori domande per l'intervista all'alveare