Query Hive: Ordina per, Raggruppa per, Distribuisci per, Cluster Per esempi

Hive fornisce inoltre un linguaggio di query di tipo SQL per lo scopo ETL Hadoop file system.

Il linguaggio Hive Query (HiveQL) fornisce un ambiente di tipo SQL in Hive per lavorare con tabelle, database e query.

Possiamo avere diversi tipi di clausole associate a Hive per eseguire manipolazioni e query di dati di diverso tipo. Per una migliore connettività con diversi nodi esterni all'ambiente. HIVE fornisce anche la connettività JDBC.

Le query Hive offrono le seguenti funzionalità:

  • Modellazione dei dati come creazione di database, tabelle, ecc.
  • Funzionalità ETL come estrazione, trasformazione e caricamento di dati in tabelle
  • Entra a far parte per unire diverse tabelle di dati
  • Script personalizzati specifici dell'utente per facilitare la codifica
  • Strumento di query più veloce su Hadoop

Creazione della tabella in Hive

Prima di iniziare con l'argomento principale di questo tutorial, creeremo una tabella da utilizzare come riferimento per il tutorial seguente.

Qui in questo tutorial creeremo la tabella "employees_guru" con 6 colonne.

Creazione della tabella in Hive

Dalla schermata sopra,

  1. Stiamo creando la tabella "employees_guru" con 6 valori di colonna come Id, Nome, Età, Indirizzo, Stipendio, Dipartimento, che appartiene ai dipendenti presenti nell'organizzazione "guru".
  2. Qui in questo passaggio stiamo caricando i dati nella tabella Employees_guru. I dati che caricheremo verranno inseriti nel file Employees.txt

Ordina per query

La sintassi ORDER BY in HiveQL è simile alla sintassi di ORDER BY in SQL Lingua.

Order by è la clausola che utilizziamo con l'istruzione "SELECT" in Query alveare, che aiuta a ordinare i dati. La clausola Ordina per utilizza le colonne nelle tabelle Hive per ordinare particolari valori di colonna menzionati con Ordina per. Qualunque sia il nome della colonna, stiamo definendo la clausola order by, la query selezionerà e visualizzerà i risultati in ordine crescente o decrescente per i valori della colonna particolare.

Se l'ordine per campo menzionato è una stringa, verrà visualizzato il risultato in ordine lessicografico. Nella parte posteriore deve essere passato ad un unico riduttore.

Ordina per query

Dallo screenshot sopra, possiamo osservare quanto segue

  1. È la query che viene eseguita sulla tabella "employees_guru" con la clausola ORDER BY con Department come nome della colonna ORDER BY definito. "Department" è String, quindi visualizzerà i risultati in base all'ordine lessicografico.
  2. Questo è l'output effettivo della query. Se lo osserviamo correttamente, possiamo vedere che vengono visualizzati i risultati in base alla colonna Dipartimento come ADMIN, Finanza e così via per eseguire orderQuery.

Query:

SELECT * FROM employees_guru ORDER BY Department;

Raggruppa per query

La clausola Group by utilizza le colonne sulle tabelle Hive per raggruppare particolari valori di colonna menzionati con group by. Qualunque sia il nome della colonna che stiamo definendo una clausola "groupby", la query selezionerà e visualizzerà i risultati raggruppando i valori della colonna particolare.

Ad esempio, nella schermata seguente verrà visualizzato il conteggio totale dei dipendenti presenti in ciascun dipartimento. Qui abbiamo "Dipartimento" come Gruppo per valore.

Raggruppa per query

Dallo screenshot sopra, osserveremo quanto segue

  1. È la query che viene eseguita sulla tabella "employees_guru" con la clausola GROUP BY con Dipartimento come nome della colonna GROUP BY definito.
  2. L'output mostrato qui è il nome del reparto e il numero di dipendenti nei diversi reparti. Qui tutti i dipendenti che appartengono al reparto specifico sono raggruppati e visualizzati nei risultati. Quindi il risultato è il nome del reparto con il numero totale di dipendenti presenti in ogni reparto.

Query:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Ordina per

La clausola Sort by viene eseguita sui nomi delle colonne delle tabelle Hive per ordinare l'output. Possiamo menzionare DESC per ordinare l'ordine in ordine discendente e menzionare ASC per ordinare l'ordine ascendente.

In questo modo ordinerà le file prima di alimentarle al riduttore. Ordina sempre in base ai tipi di colonna.

Ad esempio, se i tipi di colonna sono numerici, verrà ordinato in ordine numerico, se i tipi di colonna sono stringhe, verrà ordinato in ordine lessicografico.

Ordina per

Dallo screenshot qui sopra possiamo osservare quanto segue:

  1. È la query che viene eseguita sulla tabella "employees_guru" con la clausola SORT BY con "id" come definizione del nome della colonna SORT BY. Abbiamo utilizzato la parola chiave DESC.
  2. Quindi l'output visualizzato sarà in ordine decrescente di "id".

Query:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

Cluster By utilizzato come alternativa per entrambe le clausole Distribute BY e Sort BY in Hive-QL.

Cluster Clausola BY utilizzata sulle tabelle presenti in Hive. Hive utilizza le colonne in Cluster da per distribuire le file tra i riduttori. Cluster Le colonne BY andranno ai riduttori multipli.

  • Garantisce l'ordinamento dei valori presenti in più riduttori

Per esempio, Cluster Clausola By menzionata nel nome della colonna Id della tabella impiegati_guru. L'output durante l'esecuzione di questa query fornirà risultati a più riduttori nel back-end. Ma come front-end è una clausola alternativa sia per Sort By che per Distribute By.

Questo è in realtà un processo di back-end quando eseguiamo una query con ordina per, raggruppa per e cluster per in termini di framework Map reduce. Quindi se vogliamo memorizzare i risultati in più reducer, andiamo con Cluster By.

Cluster By

Dallo screenshot qui sopra otteniamo le seguenti osservazioni:

  1. È la query che esegue la clausola CLUSTER BY sul valore del campo Id. Qui otterrà un ordinamento sui valori Id.
  2. Visualizza l'ID e i nomi presenti nell'ordinamento guru_employees ordinati per

Query:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Distribuisci per

Clausola Distribuisci BY utilizzata sulle tabelle presenti in Hive. Hive utilizza le colonne in Distribuisci per per distribuire le righe tra i riduttori. Tutte le colonne Distribute BY andranno allo stesso riduttore.

  • Garantisce che ciascuno dei riduttori N ottenga intervalli di colonne non sovrapposti
  • Non ordina l'output di ciascun riduttore

Distribuisci per

Dallo screenshot sopra, possiamo osservare quanto segue

  1. DISTRIBUTE BY Clausola eseguita sull'ID della tabella "empoloyees_guru".
  2. Output che mostra Id, Nome. Nel back-end, andrà allo stesso reducer

Query:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;