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

Sommario:

Anonim

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

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

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

Le query Hive forniscono le seguenti funzionalità:

  • Modellazione dei dati come la creazione di database, tabelle, ecc.
  • Funzionalità ETL come Estrazione, Trasformazione e Caricamento dei dati nelle tabelle
  • Si unisce per unire diverse tabelle di dati
  • Script personalizzati specifici dell'utente per semplificare il codice
  • Strumento di query più veloce su Hadoop

In questo articolo imparerai-

  • Ordina per query
  • Raggruppa per query
  • Ordina per
  • Cluster di
  • Distribuisci da

Creazione di una tabella in Hive

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

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

Dalla schermata sopra,

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

Ordina per query:

La sintassi ORDER BY in HiveQL è simile alla sintassi ORDER BY nel linguaggio SQL.

Order by è la clausola che utilizziamo con l'istruzione "SELECT" nelle query Hive, che aiuta a ordinare i dati. La clausola Order by usa le colonne nelle tabelle Hive per ordinare i valori delle colonne particolari menzionati con Order by. Per qualunque sia il nome della colonna che 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, il risultato verrà visualizzato in ordine lessicografico. All'estremità posteriore, deve essere passato a un unico riduttore.

Dalla schermata sopra, possiamo osservare quanto segue

  1. È la query eseguita sulla tabella "dipendenti_guru" con la clausola ORDER BY con Department come definito dal nome della colonna ORDER BY.

    "Department" è String, quindi mostrerà i risultati in base all'ordine lessicografico.

  2. Questo è l'output effettivo per la query. Se lo osserviamo correttamente, possiamo vedere che ottiene risultati visualizzati in base alla colonna Department come ADMIN, Finance e così via in orderQuery da eseguire.

Query:

SELECT * FROM employees_guru ORDER BY Department;

Raggruppa per query:

La clausola Group by usa le colonne nelle tabelle Hive per raggruppare determinati valori di colonna menzionati con il gruppo da. Per qualunque nome di colonna stiamo definendo una clausola "groupby", la query selezionerà e visualizzerà i risultati raggruppando i valori di colonna particolari.

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

Dallo screenshot sopra, osserveremo quanto segue

  1. È la query che viene eseguita sulla tabella "dipendenti_guru" con la clausola GROUP BY con Reparto come definito come nome di colonna GROUP BY.
  2. L'output mostrato qui è il nome del reparto e i dipendenti contano in diversi reparti. Qui tutti i dipendenti che appartengono al reparto specifico vengono 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 decrescente e menzionare ASC per Ordine ascendente dell'ordinamento.

In questo tipo, ordinerà le file prima di alimentare il riduttore. L'ordinamento sempre dipende dai tipi di colonna.

Ad esempio, se i tipi di colonna sono numerici, ordinerà in ordine numerico, se i tipi di colonne sono stringa, ordinerà in ordine lessicografico.

Dallo screenshot qui sopra possiamo osservare quanto segue:

  1. È la query che esegue sulla tabella "dipendenti_guru" con la clausola SORT BY con "id" come definisce il 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 di:

Cluster By utilizzato come alternativa alle clausole Distribute BY e Sort BY in Hive-QL.

Clausola BY del cluster utilizzata nelle tabelle presenti in Hive. Hive usa le colonne in Cluster da per distribuire le righe tra i riduttori. Le colonne del cluster BY andranno ai riduttori multipli.

  • Assicura l'ordinamento degli ordini di valori presenti in più riduttori

Ad esempio, la clausola Cluster By menzionata nel nome della colonna ID della tabella Employee_guru. L'output durante l'esecuzione di questa query darà 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 ordinamento, raggruppamento e raggruppamento in termini di framework Map reduce. Quindi, se vogliamo memorizzare i risultati in più riduttori, utilizziamo Cluster By.

Dalla schermata qui sopra stiamo ottenendo 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 ordinato per

Query:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuisci da:

Clausola Distribuisci BY usata nelle 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.

  • Assicura che ciascuno di N riduttori ottenga intervalli di colonna non sovrapposti
  • Non ordina l'output di ogni riduttore

Dallo screenshot qui sopra, possiamo osservare quanto segue

  1. DISTRIBUTE BY Clausola eseguita sull'ID della tabella "empoloyees_guru"
  2. Output che mostra Id, Nome. All'estremità posteriore, andrà allo stesso riduttore

Query:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;