Query sull'alveare | 15 Query di base Hive per ingegneri dei dati

Contenuti

Panoramica

  • Conosci 15 query di base sull'alveare tra cui-
    • Selezioni semplici: selezione della colonna
    • Selezioni semplici: selezione riga
    • Creazione di nuove colonne
    • Funciones de Alveare
  • Questo elenco non è affatto esaustivo.. Sentiti libero di aggiungere altro nella sezione commenti.

introduzione

query su apache hive

Con le query di Apache Hive, può interrogare l'archiviazione di dati distribuiti, inclusi i dati Hadoop.

Hive supporta ANSI SQL e transazioni atomiche, coerente, isolato e durevole (ACIDO). Per aggiornare i dati, puoi usare l'istruzione MERGE, che ora soddisfa anche gli standard ACID. Le viste materializzate ottimizzano le query in base ai modelli di accesso. Hive supporta tabelle fino a 300 PB in formato riga colonna ottimizzato (ORC). Inoltre, sono supportati altri formati di file.

Puede crear tablas que se parezcan a las de una Banca dati relacional tradicional. Utilizzare le istruzioni di inserimento riconosciute, aggiornamento, Rilascio SQL e join per interrogare i dati della tabella.

L'istruzione Inserisci scrive i dati nelle tabelle. Aggiorna e rimuovi istruzioni modifica e rimuovi valori già scritti in Hive. La dichiarazione di combinazione semplifica gli aggiornamenti, rimuovere e modificare le operazioni di acquisizione dati in base a tabelle coesistenti.

Estas declaraciones admiten el compromiso automático que trata cada declaración como una transazione separada y la confirma después de que se ejecuta la declaración SQL. In questo post, tratteremo alcune query e funzioni Hive di base che ti forniranno una comprensione di base di come eseguire query Hive su dati distribuiti.

Sommario:

  • Selezioni semplici: selezione della colonna
  • Selezioni semplici: selezione riga
  • Creazione di nuove colonne
  • Caratteristiche dell'alveare
    • Funzioni semplici
    • aggregazioni
    • Funzioni data

Selezioni semplici: selezione della colonna

un alveare, la consulta de datos se realiza a través de una instrucción SELEZIONARE. Una dichiarazione selezionata ha 6 componenti chiave;

  • SELEZIONA i nomi delle colonne
  • FROM nome-tabella
  • RAGGRUPPA PER nombres de columna
  • WHERE condizioni
  • AVERE condizioni
  • ORDINA per nomi di colonna

In pratica, pochissime query avranno tutte queste clausole, che semplifica molte query. D'altra parte, las condiciones en la cláusula DOVE pueden ser muy complejas y si necesita unir dos o más tablas juntas, servono più clausole (ADERIRE y ON).

Tutti i nomi nelle clausole precedenti sono stati scritti in maiuscolo per maggiore chiarezza. HQL non fa distinzione tra maiuscole e minuscole. Inoltre, non è necessario scrivere ogni clausola su una nuova riga, Ma spesso è più chiaro farlo per tutte le query, tranne che per quelle più semplici.

In questa lezione, Inizieremo con il più semplice e arriveremo al più complesso.

Selezioni semplici: selezione della colonna

Tra tutte le richieste di Hive, La query più semplice è effettivamente quella che restituisce il contenuto dell'intera tabella.

SELEZIONARE *
DA geog_all;
CREA VISTA [SE NON ESISTE] [db_name.]view_name [(nome_colonna [COMMENTO column_comment], ...)  ]

È meglio esercitarsi e, generalmente, Più efficiente elencare in modo esplicito i nomi di colonna che si desidera vengano restituiti.

SELEZIONA anonid, Tipi di carburante, acorn_type
FROM geog_all;

Selezioni semplici: selezione riga

Allo stesso tempo, limitando le colonne restituite da una query, È inoltre possibile limitare le righe restituite. El caso más simple dicho de otra forma cuántas filas se desean usando la cláusula Limit.

SELEZIONA anonid, Tipi di carburante, acorn_type
FROM geog_all
LIMIT 10;

Questo è utile se vuoi solo avere un'idea di come appaiono i dati. Generalmente, Ti consigliamo di limitare le righe restituite in base ad alcuni criteri. In altre parole, determinati valori o intervalli all'interno di una o più colonne.

SELEZIONA anonid, Tipi di carburante, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly";

L'espressione nella clausola where può essere più complessa e includere più di una colonna.

SELEZIONA anonid, Tipi di carburante, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly" E acorn_type > 42;

SELEZIONA anonid, Tipi di carburante, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly" E acorn_type > 42 E noci1 <> "--";

Si noti che le colonne utilizzate nelle condizioni della clausola Where non richiedono che vengano visualizzate nella clausola Select. Inoltre, altri operatori possono essere utilizzati nella clausola where. Per espressioni complesse, Le parentesi quadre possono essere utilizzate per imporre la precedenza.

SELEZIONA anonid, Tipi di carburante, acorn_type, frutta a guscio1, ldz
FROM geog_all
WHERE
fueltypes = "ElecOnly"
E acorn_type INTERMEDIO 42 E 47
E (dadi1 NON IN ("UKM", "UKI") OR ldz = "--");

Creazione di nuove colonne

È possibile creare nuove colonne nell'output della query. Queste colonne possono provenire da combinazioni di altre colonne che utilizzano operatori e / o Funzionalità Hive integrate.

SELEZIONA anonid, eprofileclass, acorn_type, (eprofileclass * acorn_type) AS moltiplicare, (eprofileclass + acorn_type) AS added
FROM edrp_geography_data b;

Un elenco completo degli operatori e delle funzionalità disponibili all'interno di Hive è disponibile all'indirizzo documentazione.

Quando si crea una nuova colonna, È consuetudine fornire un 'alias'’ per la colonna. Questo è essenzialmente il nome che si desidera assegnare alla nuova colonna. L'alias è dato immediatamente dopo l'espressione a cui si riferisce. Facoltativamente, puoi aggiungere la parola chiave AS per chiarezza. Se non fornisci un alias per le tue nuove colonne, Hive genererà un nome per te.

Anche se il termine alias può sembrare un po' strano per una nuova colonna che non ha un nome naturale, alias' può essere utilizzato anche con qualsiasi colonna esistente per fornire un nome più significativo nell'output.

Alle tabelle può anche essere assegnato un alias, questo è particolarmente comune nelle query di join che coinvolgono più tabelle dove è necessario distinguere tra colonne con lo stesso nome in tabelle diverse. Allo stesso tempo, usando gli operatori per creare nuove colonne, Inoltre, sono disponibili molte funzionalità Hive predefinite che possono essere utilizzate.

Caratteristiche dell'alveare

Funzioni semplici

Concat Può essere utilizzato per aggiungere stringhe

SELEZIONA anonid, acorn_category,
acorn_group,
acorn_type,
concat (acorn_category, ",", acorn_group, ",", acorn_type)  AS acorn_code
FROM geog_all;

substr Può essere utilizzato per estrarre una parte di una catena

SELEZIONA anon_id,
AdvanceDateTime,
substr (AdvanceDateTime, 1, 2) AS giorno,
substr (AdvanceDateTime, 3, 3) AS mese,
substr (AdvanceDateTime, 6, 2) AS year
FROM elec_c;

Esempi di lunghezza, Istruzione e investimenti

SELEZIONA anonid,
     acorn_code,
     lunghezza (acorn_code),
     Instr (acorn_code, ',') COME a_catpos,
     Instr (Inverso (acorn_code), "," ) COME reverse_a_typepo

Dove le funzioni indispensabili possono essere nidificate tra loro e le conversioni di tipo

SELEZIONA anonid,
substr (acorn_code, 7, 2) COME ac_type_string,
lancio (substr (acorn_code, 7, 2) COME INT) COME ac_type_int,
substr (acorn_code, 7, 2) +1 AS ac_type_not_sure
FROM geog_all;

aggregazioni

Le funzioni di aggregazione vengono utilizzate per eseguire una sorta di calcolo matematico o statistico su un gruppo di righe. Le righe di ogni gruppo sono determinate dai diversi valori in una o più colonne specifiche. Un elenco di tutte le funzionalità disponibili è abilitato nella documentazione di apache.

SELEZIONA anon_id,
              contare (Eleckwh) COME total_row_count,
              somma (Eleckwh) COME total_period_usage,
              min (Eleckwh) COME min_period_usage,
              media (Eleckwh) COME avg_period_usage,
             max (Eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id;

Nell'esempio sopra, Sono state eseguite cinque aggregazioni in un'unica colonna anon_id. È possibile aggiungere più colonne specificandole sia nella clausola select che nella clausola group by. Il raggruppamento verrà effettuato in base all'ordine delle colonne elencate nella clausola di raggruppamento per. Ciò che non è consentito è specificare una colonna non aggiunta nella clausola select che non è menzionata nella clausola group by.

SELEZIONA anon_id,
              substr (AdvanceDateTime, 6, 2) COME reading_year,
              contare (Eleckwh) COME total_row_count,
              somma (Eleckwh) COME total_period_usage,
              min (Eleckwh) COME min_period_usage,
              media (Eleckwh) COME avg_period_usage,
              max (Eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id, substr (AdvanceDateTime, 6, 2);

Sfortunatamente, La clausola Raggruppa per non accetta alias '.

SELEZIONA anon_id,
              substr (AdvanceDateTime, 6, 2) COME reading_year,
              contare (Eleckwh) COME total_row_count,
              somma (Eleckwh) COME total_period_usage,
              min (Eleckwh) COME min_period_usage,
              media (Eleckwh) COME avg_period_usage,
              max (Eleckwh) AS max_period_usage
      FROM elec_c
GROUP BY anon_id, substr (AdvanceDateTime, 6, 2)
ORDINA PER anon_id, reading_year;

Pero la cláusula Order by sí lo hace.

La keyword Distinct proporciona un conjunto de una combinación única de valores de columna dentro de una tabla sin ningún tipo de agregación.

SELECT DISTINCT eprofileclass, fueltypes
FROM geog_all;

Funzioni data

Nelle tabelle elec_c e gas_c, La colonna Data e ora anticipate, anche se contiene informazioni sul tipo di timestamp, è impostato come un tipo di stringa. Per la maggior parte del tempo, Questo può essere abbastanza conveniente. Nonostante questo, Ci saranno momenti in cui avremo davvero bisogno di essere in grado di trattare la colonna vertebrale come un timestamp. Forse l'esempio più ovvio è quando è necessario ordinare le righe in base alla colonna avanzata nel tempo.

Hive offre una gamma di funzionalità associate alla data che consentono di convertire le stringhe in timestamp e, allo stesso tempo, Estrai parti del timestamp.

unix_timestamp Restituisce i dati e l'ora correnti, Come un numero intero!

from_unixtime Prende un numero intero e lo trasforma in una stringa di timestamp riconoscibile

SELEZIONA unix_timestamp () AS currenttime
FROM sample_07
LIMIT 1;

SELEZIONA from_unixtime (unix_timestamp ()) AS currenttime
FROM sample_07
LIMIT 1;

Esistono diversi strumenti per la parte della data che estrarranno le parti rilevanti di una stringa di timestamp

SELEZIONA anon_id,
             from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa'))
                  COME proper_date,
            anno (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa')))
                 COME full_year,
            mese (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa')))
                COME full_month,
            giorno (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa')))
               COME full_day,
           last_day (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa')))
              COME last_day_of_month,
           date_add ( (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ggMMMaa'))),10)
              AS added_days
FROM elec_days_c
ORDER BY proper_date;

conclusione:

Nella posta, trattiamo alcune funzioni e query di base di Hive. L'esecuzione di query su dati distribuiti non è molto diversa dall'esecuzione di query in MySQL. Seguiranno alcuni post in cui tratteremo funzioni e query più avanzate.. Spero che il post ti sia piaciuto. Non dimenticare di lasciare i tuoi commenti nella sezione commenti qui sotto.

Ti consiglio di leggere questi post per familiarizzare con gli strumenti per i big data:

Fateci sapere i vostri pensieri nei commenti qui sotto..

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.