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:

  1. 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.
  2. Il compilatore invia una richiesta a Metastore e riceve Metadata come risposta.
  3. Il compilatore comunica nuovamente il piano di esecuzione al driver, che lo invia ulteriormente al motore di esecuzione.
  4. Il motore di esecuzione interagisce con Job Tracker, che è il nodo nome per completare il lavoro.
  5. Parallelamente, anche il motore di esecuzione esegue l'operazione Metadata.
  6. Il nodo Nome esegue il lavoro dal tracker attività o dai nodi Dati.
  7. 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

  1. 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.
  2. 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.
  3. L'indicizzazione bitmap viene eseguita per accelerare le query.
  4. Migliora le prestazioni consentendo il partizionamento dei dati.
  5. Hive può elaborare diversi tipi di file compressi, risparmiando così spazio su disco.
  6. 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.
  7. Fornisce una gamma di API aggiuntive per creare un motore di query personalizzato.
  8. 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.
  9. È 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

  1. Le query Hive hanno una latenza più elevata in quanto Hadoop è un sistema orientato al batch.
  2. Le query secondarie o nidificate non sono supportate.
  3. L'operazione di aggiornamento, eliminazione o inserimento non può essere eseguita a livello di record.
  4. 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ù -

  1. Che cosa sono i tipi di dati Hive?
  2. Alternative alveare | Scopri le caratteristiche
  3. Componenti principali dei comandi Hive
  4. Le 10 migliori domande per l'intervista all'alveare

Categoria: