Hive: operatori incorporati

Questo capitolo spiega gli operatori incorporati di Hive. Esistono quattro tipi di operatori in Hive:

  • Operatori relazionali
  • Operatori aritmetici
  • Operatori logici
  • Operatori complessi

Operatori relazionali

Questi operatori vengono utilizzati per confrontare due operandi. La tabella seguente descrive gli operatori relazionali disponibili in Hive:

Operatore Operando Descrizione
A = B tutti i tipi primitivi VERO se l'espressione A è equivalente all'espressione B altrimenti FALSO.
A! = B tutti i tipi primitivi TRUE se l'espressione A non è equivalente all'espressione B altrimenti FALSE.
A <B tutti i tipi primitivi VERO se l'espressione A è minore dell'espressione B, altrimenti FALSO.
A <= B tutti i tipi primitivi VERO se l'espressione A è minore o uguale all'espressione B altrimenti FALSO.
A> B tutti i tipi primitivi VERO se l'espressione A è maggiore dell'espressione B, altrimenti FALSO.
A> = B tutti i tipi primitivi TRUE se l'espressione A è maggiore o uguale all'espressione B altrimenti FALSE.
A È NULLO tutti i tipi TRUE se l'espressione A restituisce NULL, altrimenti FALSE.
A NON È NULLO tutti i tipi FALSE se l'espressione A restituisce NULL, altrimenti TRUE.
A COME B stringhe TRUE se lo schema di stringa A corrisponde a B, altrimenti FALSE.
A RLIKE B stringhe NULL se A o B è NULL, TRUE se una qualsiasi sottostringa di A corrisponde all'espressione regolare Java B, altrimenti FALSE.
A REGEXP B stringhe Come RLIKE.

Esempio

Supponiamo che il file employeetabella è composta da campi denominati Id, Nome, Salario, Designazione e Reparto come mostrato di seguito. Genera una query per recuperare i dettagli del dipendente il cui ID è 1205.

+-----+--------------+--------+---------------------------+------+
| Id  | Name         | Salary | Designation               | Dept |
+-----+--------------+------------------------------------+------+
|1201 | Gopal        | 45000  | Technical manager         | TP   |
|1202 | Manisha      | 45000  | Proofreader               | PR   |
|1203 | Masthanvali  | 40000  | Technical writer          | TP   |
|1204 | Krian        | 40000  | Hr Admin                  | HR   |
|1205 | Kranthi      | 30000  | Op Admin                  | Admin|
+-----+--------------+--------+---------------------------+------+

La seguente query viene eseguita per recuperare i dettagli del dipendente utilizzando la tabella sopra:

hive> SELECT * FROM employee WHERE Id=1205;

In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:

+-----+-----------+-----------+----------------------------------+
| ID  | Name      | Salary    | Designation              | Dept  |
+-----+---------------+-------+----------------------------------+
|1205 | Kranthi   | 30000     | Op Admin                 | Admin |
+-----+-----------+-----------+----------------------------------+

La seguente query viene eseguita per recuperare i dettagli del dipendente il cui stipendio è maggiore o uguale a Rs 40000.

hive> SELECT * FROM employee WHERE Salary>=40000;

In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:

+-----+------------+--------+----------------------------+------+
| ID  | Name       | Salary | Designation                | Dept |
+-----+------------+--------+----------------------------+------+
|1201 | Gopal      | 45000  | Technical manager          | TP   |
|1202 | Manisha    | 45000  | Proofreader                | PR   |
|1203 | Masthanvali| 40000  | Technical writer           | TP   |
|1204 | Krian      | 40000  | Hr Admin                   | HR   |
+-----+------------+--------+----------------------------+------+

Operatori aritmetici

Questi operatori supportano varie operazioni aritmetiche comuni sugli operandi. Tutti restituiscono tipi di numeri. La tabella seguente descrive gli operatori aritmetici disponibili in Hive:

Operatori Operando Descrizione
A + B tutti i tipi di numero Fornisce il risultato dell'aggiunta di A e B.
A - B tutti i tipi di numero Fornisce il risultato della sottrazione di B da A.
A * B tutti i tipi di numero Fornisce il risultato della moltiplicazione di A e B.
A / B tutti i tipi di numero Fornisce il risultato della divisione di B da A.
A% B tutti i tipi di numero Fornisce il promemoria risultante dalla divisione di A per B.
A & B tutti i tipi di numero Fornisce il risultato di AND bit per bit di A e B.
A | B tutti i tipi di numero Fornisce il risultato dell'OR bit per bit di A e B.
A ^ B tutti i tipi di numero Fornisce il risultato dello XOR bit per bit di A e B.
~ A tutti i tipi di numero Fornisce il risultato di bit per bit NOT di A.

Esempio

La seguente query aggiunge due numeri, 20 e 30.

hive> SELECT 20+30 ADD FROM temp;

In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:

+--------+
|   ADD  |
+--------+
|   50   |
+--------+

Operatori logici

Gli operatori sono espressioni logiche. Tutti restituiscono VERO o FALSO.

Operatori Operandi Descrizione
A AND B booleano TRUE se sia A che B sono TRUE, altrimenti FALSE.
A && B booleano Come A AND B.
A OR B booleano TRUE se A o B o entrambi sono TRUE, altrimenti FALSE.
A || B booleano Uguale a A OR B.
NON A booleano TRUE se A è FALSE, altrimenti FALSE.
!UN booleano Uguale a NON A.

Esempio

La seguente query viene utilizzata per recuperare i dettagli dei dipendenti il ​​cui reparto è TP e lo stipendio è superiore a Rs 40000.

hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;

In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:

+------+--------------+-------------+-------------------+--------+
| ID   | Name         | Salary      | Designation       | Dept   |
+------+--------------+-------------+-------------------+--------+
|1201  | Gopal        | 45000       | Technical manager | TP     |
+------+--------------+-------------+-------------------+--------+

Operatori complessi

Questi operatori forniscono un'espressione per accedere agli elementi di tipi complessi.

Operatore Operando Descrizione
Un] A è un array e n è un int Restituisce l'ennesimo elemento dell'array A. Il primo elemento ha indice 0.
M [tasto] M è una mappa <K, V> e la chiave è di tipo K. Restituisce il valore corrispondente alla chiave nella mappa.
Sx S è una struttura Restituisce il campo x di S.