Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Lavora con le viste Hive
È possibile utilizzare Athena per eseguire query sulle visualizzazioni Apache create in metastore Hive esterni. Athena traduce le tue visualizzazioni per te on-the-fly in fase di esecuzione senza modificare la vista originale o memorizzare la traduzione.
Ad esempio, supponiamo di avere una visualizzazione Hive come la seguente, che utilizza una sintassi non supportata in Athena come LATERAL VIEW explode()
:
CREATE VIEW team_view AS SELECT team, score FROM matches LATERAL VIEW explode(scores) m AS score
Athena traduce la stringa di query di visualizzazione Hive in un'istruzione simile alla seguente, che è in grado di eseguire:
SELECT team, score FROM matches CROSS JOIN UNNEST(scores) AS m (score)
Per informazioni sul collegamento di un metastore Hive esterno ad Athena, consulta la sezione Usa un metastore Hive esterno.
Considerazioni e limitazioni
Durante l'esecuzione di query sulle visualizzazioni Hive da Athena, considera i seguenti punti:
-
Athena non supporta la creazione di visualizzazioni Hive. È possibile creare visualizzazioni Hive nel metastore esterno di Hive, sulle quali è possibile poi eseguire query da Athena.
-
Athena non supporta le visualizzazioni personalizzate UDFs per Hive.
-
A causa di un problema noto nella console Athena, le visualizzazioni Hive vengono mostrate nell'elenco delle tabelle anziché in quello delle visualizzazioni.
-
Sebbene il processo di traduzione sia automatico, alcune funzioni Hive non sono supportate per le visualizzazioni Hive o richiedono una gestione speciale. Per ulteriori informazioni, consulta la sezione seguente.
Limitazioni nel supporto delle funzioni Hive
Questa sezione evidenzia le funzioni Hive che Athena non supporta per le visualizzazioni Hive o che richiedono un trattamento speciale. Attualmente, poiché Athena supporta principalmente le funzioni di Hive 2.2.0, le funzioni presenti solo nelle versioni successive (come Hive 4.0.0) non sono disponibili. Per un elenco completo delle funzioni di Hive, consulta il manuale del linguaggio Hive
Funzioni di aggregazione
Funzioni di aggregazione che richiedono una gestione speciale
La seguente funzione di aggregazione per le visualizzazioni Hive richiede una gestione speciale.
-
Avg: al posto di
avg(INT i)
, utilizzaavg(CAST(i AS DOUBLE))
.
Funzioni aggregate non supportate
Le seguenti funzioni di aggregazione Hive non sono supportate in Athena per le visualizzazioni Hive.
covar_pop histogram_numeric ntile percentile percentile_approx
Funzioni di regressione come regr_count
, regr_r2
e regr_sxx
non sono supportate in Athena per le visualizzazioni Hive.
Funzioni aggregate non supportate
Le seguenti funzioni di aggregazione Hive non sono supportate in Athena per le visualizzazioni Hive.
date_format(date/timestamp/string ts, string fmt) day(string date) dayofmonth(date) extract(field FROM source) hour(string date) minute(string date) month(string date) quarter(date/timestamp/string) second(string date) weekofyear(string date) year(string date)
Funzioni aggregate non supportate
Funzioni di regressione come mask()
, e mask_first_n()
non sono supportate in Athena per le visualizzazioni Hive.
Funzioni varie
Funzioni varie che richiedono una gestione speciale
Le seguenti funzioni varie per le visualizzazioni Hive richiedono una gestione speciale.
-
md5: Athena supporta
md5(binary)
ma nonmd5(varchar)
. -
Explode: Athena supporta
explode
quando viene utilizzato nella seguente sintassi:LATERAL VIEW [OUTER] EXPLODE(
<argument>
) -
Explode: Athena supporta
posexplode
quando viene utilizzato nella seguente sintassi:LATERAL VIEW [OUTER] POSEXPLODE(
<argument>
)Nell'output
(pos, val)
, Athena tratta la colonnapos
comeBIGINT
. Per questo motivo, potrebbe essere necessario eseguire il cast della colonnapos
aBIGINT
per evitare una visualizzazione obsoleta. Nell'esempio seguente viene descritta tale tecnica.SELECT CAST(c AS BIGINT) AS c_bigint, d FROM table LATERAL VIEW POSEXPLODE(
<argument>
) t AS c, d
Funzioni varie non supportate
Le seguenti funzioni di aggregazione Hive non sono supportate in Athena per le visualizzazioni Hive.
aes_decrypt aes_encrypt current_database current_user inline java_method logged_in_user reflect sha/sha1/sha2 stack version
Operatori
Operatori che richiedono una gestione speciale
I seguenti operatori per le visualizzazioni Hive richiedono una gestione speciale.
-
Operatore mod o modulo (%): poiché il tipo
DOUBLE
esegue implicitamente un cast aDECIMAL(x,y)
, la sintassi seguente può causare il messaggio di erroreView is stale
(La visualizzazione è non aggiornata):a_double % 1.0 AS column
Per risolvere il problema, utilizza
CAST
, come nell'esempio seguente.CAST(a_double % 1.0 as DOUBLE) AS column
-
Operatore divisione (/): in Hive,
int
diviso perint
produce undouble
. In Athena, la stessa operazione produce unint
abbreviato.
Operatori non supportati
Athena non supporta i seguenti operatori per le visualizzazioni Hive.
~A: bitwise NOT
A ^ b: bitwise XOR
A & b: bitwise AND
A | b: bitwise OR
A <=> b: Restituisce lo stesso risultato dell'operatore uguale (=
) per operandi non nulli. Restituisce TRUE
se entrambi sono NULL
, FALSE
se uno di questi è NULL
.
Funzioni stringa
Funzioni stringa che richiedono una gestione speciale
Le seguenti funzioni stringa per le visualizzazioni Hive richiedono una gestione speciale.
-
chr (bigint|doppia a): Hive consente argomenti negativi; Athena no.
-
instr (string str, string substr): poiché la mappatura Athena per la funzione
instr
restituisceBIGINT
anzichéINT
, utilizza la sintassi seguente:CAST(instr(string str, string substr) as INT)
Senza questo passaggio, la visualizzazione sarà considerata obsoleta.
-
lunghezza (stringa a): poiché la mappatura Athena per la funzione
length
restituisceBIGINT
anzichéINT
, utilizza la seguente sintassi in modo che la visualizzazione non venga considerata obsoleta:CAST(length(string str) as INT)
Funzioni stringa non supportate
Le seguenti funzioni stringa di Hive non sono supportate nelle visualizzazioni Hive in Athena.
ascii(string str) character_length(string str) decode(binary bin, string charset) encode(string src, string charset) elt(N int,str1 string,str2 string,str3 string,...) field(val T,val1 T,val2 T,val3 T,...) find_in_set(string str, string strList) initcap(string A) levenshtein(string A, string B) locate(string substr, string str[, int pos]) octet_length(string str) parse_url(string urlString, string partToExtract [, string keyToExtract]) printf(String format, Obj... args) quote(String text) regexp_extract(string subject, string pattern, int index) repeat(string str, int n) sentences(string str, string lang, string locale) soundex(string A) space(int n) str_to_map(text[, delimiter1, delimiter2]) substring_index(string A, string delim, int count)
XPathfunzioni non supportate
XPathLe funzioni di Hive come xpath
xpath_short
, e non xpath_int
sono supportate nelle viste di Athena per Hive.
Risoluzione dei problemi
Quando si utilizzano le visualizzazioni Hive in Athena, potrebbero verificarsi i seguenti problemi:
-
Visualizza
<view name>
è obsoleto: questo messaggio di solito indica una mancata corrispondenza di tipo tra la vista in Hive e Athena. Se la stessa funzione nella documentazione delle funzioni e degli operatori di Hive LanguageManual UDFe Presto ha firme diverse, prova a inserire il tipo di dati non corrispondente. -
Function not registered (Funzione non registrata): Athena non supporta attualmente la funzione. Per ulteriori informazioni, consulta le informazioni descritte precedentemente in questo documento.