Uno dei modi più immediati per utilizzare Hive, soprattutto quando se ne affronta lo studio, è quello di avviare una console
da riga di comando. Nel progetto ne esistono due, entrambe rispondenti a comandi presenti nella cartella bin dell'installazione di Hive:
- Hive CLI, la console originaria che, sebbene deprecata, è tuttora disponibile e può risultare comoda
in fase di studio del sistema e di sperimentazione; - Beeline, la console attuale, nata per interagire con HiveServer2, la versione aggiornata del server Hive.
La sua connessione verso questo servizio opera su JDBC.
Entrambe le console permettono di lavorare con Hive utilizzando i comandi HiveQL ma hanno due approcci diversi all'avvio della sessione: vediamoli entrambi.
Console Hive CLI
Per usare la console Hive CLI, è sufficiente avere a disposizione un'installazione di Hive pronta all'uso. Il comando
richiesto è il seguente:
hive -h <host> -p <port>
dove le opzioni -h e -p permettono di indicare, rispettivamente, l'host cui ci vogliamo collegare e la
relativa porta TCP. Una connessione senza opzioni andrà comunque bene per un accesso locale:
$ hive
Logging initialized using configuration in jar:file:...
WARNING: Hive CLI is deprecated and migration to Beeline is recommended
hive>
Come si vede, a parte la configurazione dei log, Hive specifica che questa console è deprecata e si consiglia il passaggio a Beeline:
ricordiamo ancora che nonostante ciò sia vero la console Hive CLI può ancora essere utile per la sua semplicità sia in
fase di sperimentazione sia di studio.
I comandi che può ricevere sono di tre tipologie:
- linguaggio HiveQL per lavorare direttamente sui dati in stile SQL. Tutto ciò verrà approfondito nel resto della
guida; - comandi di shell purchè preceduti da un punto esclamativo "!":
hive> !ls -la; total 216 drwxr-xr-x 17 bigdata bigdata 4096 May 11 11:30 . drwxr-xr-x 4 root root 4096 Oct 18 2018 .. -rw-rw-r-- 1 bigdata bigdata 39 Apr 13 07:32 appunti.txt -rw-rw-r-- 1 bigdata bigdata 20 Apr 12 23:35 slides.pdf ... ...
Questa direttiva ha stampato il contenuto della directory corrente al momento dell'invocazione del comando hive;
- comandi HDFS introdotti dalla parola chiave dfs.
hive> dfs -ls / ; Found 2 items drwx-wx-wx - hduser supergroup 0 2019-05-03 22:35 /tmp drwxr-xr-x - hduser supergroup 0 2019-05-10 13:37 /warehouse
Con questo comando abbiamo fatto accesso al contenuto della nostra installazione di Hadoop dove il file system HDFS contiene due cartelle: /tmp e /warehouse.
Tutti i comandi della console hive devono terminare con un punto e virgola ";". Infine, quando vorremo abbandonare la console
e tornare al tradizionale ambiente da riga di comando potremo semplicemente digitare quit anch'esso seguito da punto e virgola.
Beeline
Beeline è la console attuale che andrebbe preferita in ambienti di produzione. Dopo averla avviata dovremo fornire noi i
comandi di connessione ad un'istanza di HiveServer2: qualora ci trovassimo a lavorare in una macchina virtuale già pronta come
quella di Cloudera il server probabilmente sarebbe già attivo. Si noti che con Beeline dovremo fornire anche le credenziali di accesso che saranno state inserite nel file di configurazione hive-site.xml della cartella conf di Hive.
La parola chiave da usare per la connessione sarà !connect:
$ beeline
Beeline versione...
beeline> !connect jdbc:hive2://localhost:10000 hive cloudera
...
Connected to: Apache Hive
....
Come si vede nelle righe precedenti (di cui abbiamo lasciato solo le porzioni significative) una volta invocato il comando
beeline verremo ricevuti da un nuovo prompt in cui richiederemo l'attivazione di una connessione al server. La stringa
che è stata utilizzata contiene i parametri per l'individuazione del servizio e richiede indirizzo IP e porta TCP che di default
è impostata a 10000. Si potrebbe inoltre aggiungere in coda il nome del database Hive cui vogliamo collegarci: se, ad esempio, volessimo
lavorare sul database "fantacalcio" utilizzeremmo la connection string jdbc:hive2://localhost:10000/fantacalcio. I due
termini che seguono sono, rispettivamente, username e password di accesso. In questo caso, abbiamo indicato "hive" e "cloudera", le credenziali che si utilizzano con la macchina virtuale di Cloudera ma dovranno essere cambiate in base alla propria configurazione.
Dopo la connessione, si potrà lavorare ai database con i comandi HiveQL e alla fine si potrà uscire dalla console Beeline
con il comando !q o !quit.