Utilizzo delle visualizzazioni Hive - Amazon Athena

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à.

Utilizzo delle visualizzazioni 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 Utilizzo di un connettore dati Athena per il 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 funzioni definite dall'utente personalizzate per le visualizzazioni 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 Hive, consultaManuale del linguaggio Hive UDF.

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), utilizza avg(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 non md5(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 colonna pos come BIGINT. Per questo motivo, potrebbe essere necessario eseguire il cast della colonna pos a BIGINT 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 a DECIMAL(x,y), la sintassi seguente può causare il messaggio di errore View 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 per int produce un double. In Athena, la stessa operazione produce un int 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 restituisce BIGINT 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 restituisce BIGINT 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)

Funzioni XPath non supportate

Le funzioni XPath di Hive come xpath, xpath_short, e xpath_int non sono supportate in Athena per le visualizzazioni Hive.

Risoluzione dei problemi

Quando si utilizzano le visualizzazioni Hive in Athena, potrebbero verificarsi i seguenti problemi:

  • View <view name> is stale (La visualizzazione <nome visualizzazione> non è aggiornata): questo messaggio di solito indica una differenza nella tipologia di visualizzazione in Hive e in Athena. Se la stessa funzione nella documentazione delle funzioni e degli operatori di Hive LanguageManual UDF e 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.