Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeiten mit Hive-Ansichten
Sie können Athena verwenden, um vorhandene Ansichten in Ihren externen Apache-Hive-Metaspeichern abzufragen. Athena übersetzt Ihre Ansichten zur on-the-fly Laufzeit für Sie, ohne die ursprüngliche Ansicht zu ändern oder die Übersetzung zu speichern.
Angenommen, Sie haben eine Hive-Ansicht wie die folgende, die eine Syntax verwendet, die in Athena nicht unterstützt wird, wie LATERAL VIEW explode()
:
CREATE VIEW team_view AS SELECT team, score FROM matches LATERAL VIEW explode(scores) m AS score
Athena übersetzt die Hive-View-Abfragezeichenfolge in eine Anweisung wie die folgende, die Athena ausführen kann:
SELECT team, score FROM matches CROSS JOIN UNNEST(scores) AS m (score)
Informationen zum Verbinden eines externen Hive-Metastores mit Athena finden Sie unter Verwenden von Athena-Daten-Connector für externen Hive-Metastore.
Überlegungen und Einschränkungen
Berücksichtigen Sie bei der Abfrage von Hive-Ansichten von Athena die folgenden Punkte:
-
Athena unterstützt das Erstellen von Hive-Ansichten nicht. Sie können Hive-Ansichten in Ihrem externen Hive-Metastore erstellen, die Sie dann von Athena abfragen können.
-
Athena unterstützt keine benutzerdefinierten UDFs für Hive-Ansichten.
-
Aufgrund eines bekannten Problems in der Athena-Konsole werden Hive-Ansichten unter der Tabellenliste anstelle der Liste der Ansichten angezeigt.
-
Obwohl der Übersetzungsprozess automatisch abläuft, werden bestimmte Hive-Funktionen für Hive-Ansichten nicht unterstützt oder erfordern eine spezielle Handhabung. Weitere Informationen finden Sie im folgenden Abschnitt.
Einschränkungen bei der Unterstützung von Hive-Funktionen
In diesem Abschnitt werden die Hive-Funktionen hervorgehoben, die Athena nicht für Hive-Ansichten unterstützt oder die eine spezielle Behandlung erfordern. Da Athena hauptsächlich Funktionen von Hive 2.2.0 unterstützt, sind derzeit Funktionen, die nur in höheren Versionen (wie Hive 4.0.0) verfügbar sind, nicht verfügbar. Eine vollständige Liste der Hive-Funktionen finden Sie unter Hive Sprachhandbuch UDF
Aggregationsfunktionen
Aggregatfunktionen, die eine besondere Handhabung erfordern
Die folgende Aggregatfunktion für Hive-Ansichten erfordert eine besondere Handhabung.
-
Avg – Verwenden Sie
avg(CAST(i AS DOUBLE))
anstelle vonavg(INT i)
.
Aggregatfunktionen werden nicht unterstützt
Die folgenden Hive-Aggregatfunktionen werden in Athena für Hive-Ansichten nicht unterstützt.
covar_pop histogram_numeric ntile percentile percentile_approx
Regressionsfunktionen wie regr_count
, regr_r2
und regr_sxx
werden in Athena für Hive-Ansichten nicht unterstützt.
Datumsfunktionen werden nicht unterstützt
Die folgenden Hive-Datumsfunktionen werden in Athena für Hive-Ansichten nicht unterstützt.
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)
Maskierungsfunktionen werden nicht unterstützt
Hive-Maskierungsfunktionen wie mask()
und mask_first_n()
werden in Athena für Hive-Ansichten nicht unterstützt.
Verschiedene Funktionen
Aggregatfunktionen, die eine besondere Handhabung erfordern
Die folgenden verschiedenen Funktionen für Hive-Ansichten erfordern eine besondere Handhabung.
-
md5 .. Athena unterstützt
md5(binary)
aber nichtmd5(varchar)
. -
Explode – Athena unterstützt
explode
, wenn es in der folgenden Syntax verwendet wird:LATERAL VIEW [OUTER] EXPLODE(
<argument>
) -
Postexplode – Athena unterstützt
posexplode
, wenn es in der folgenden Syntax verwendet wird:LATERAL VIEW [OUTER] POSEXPLODE(
<argument>
)In der
(pos, val)
-Ausgabe behandelt Athena diepos
-Spalte alsBIGINT
. Aus diesem Grund müssen Sie möglicherweise diepos
-Spalte inBIGINT
umwandeln, um eine veraltete Ansicht zu vermeiden. Das folgende Beispiel illustriert diese Technik.SELECT CAST(c AS BIGINT) AS c_bigint, d FROM table LATERAL VIEW POSEXPLODE(
<argument>
) t AS c, d
Verschiedene Funktionen werden nicht unterstützt
Die folgenden Hive-Funktionen werden in Athena für Hive-Ansichten nicht unterstützt.
aes_decrypt aes_encrypt current_database current_user inline java_method logged_in_user reflect sha/sha1/sha2 stack version
Operatoren
Betreiber, die eine Sonderverarbeitung benötigen
Die folgenden Operatoren für Hive-Ansichten erfordern eine besondere Handhabung.
-
Mod-Operator (%) – Da der
DOUBLE
-Typ implizit inDECIMAL(x,y)
umgewandelt wird, kann die folgende Syntax zu einerView is stale
-Fehlermeldung führen:a_double % 1.0 AS column
Um dieses Problem zu umgehen, verwenden Sie
CAST
, wie im folgenden Beispiel.CAST(a_double % 1.0 as DOUBLE) AS column
-
Divisionsbetreiber (/) – In Hive produziert
int
geteilt durchint
double
. In Athena erzeugt dieselbe Operation einen abgeschnittenenint
.
Operatoren werden nicht unterstützt
Athena unterstützt die folgenden Operatoren für Hive-Ansichten nicht.
~A – Bitwise NOT
A ^ b – Bitwise XOR
A & b – Bitwise AND
A | b – Bitwise OR
A <=> b – Gibt das gleiche Ergebnis wie der Operator Gleich (=
) für Nicht-Null-Operanden zurück. Gibt TRUE
zurück, wenn beide NULL
sind, FALSE
, wenn einer von ihnen NULL
ist.
Zeichenfolgenfunktionen
Zeichenfolgen-Funktionen, die eine besondere Handhabung erfordern
Die folgenden Hive-Zeichenfolgen-Funktionen für Hive-Ansichten erfordern eine besondere Handhabung.
-
chr(bigint|double a) – Hive erlaubt negative Argumente; Athena nicht.
-
instr(string str, string substr) – Da das Athena-Mapping für die
instr
-FunktionBIGINT
stattINT
zurückgibt, verwenden Sie die folgende Syntax:CAST(instr(string str, string substr) as INT)
Ohne diesen Schritt wird die Ansicht als abgestanden angesehen.
-
length(string a) – Da das Athena-Mapping für die
length
-FunktionBIGINT
anstelle vonINT
zurückgibt, verwenden Sie die folgende Syntax, damit die Ansicht nicht als veraltet betrachtet wird:CAST(length(string str) as INT)
Zeichenfolgen-Funktionen werden nicht unterstützt
Die folgenden Hive-Zeichenfolgen-Funktionen werden in Athena für Hive-Ansichten nicht unterstützt.
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)
XPath-Funktionen werden nicht unterstützt
Hive-XPath-funktionen wie xpath
, xpath_short
und xpath_int
werden in Athena für Hive-Ansichten nicht unterstützt.
Fehlerbehebung
Wenn Sie Hive-Ansichten in Athena verwenden, treten möglicherweise die folgenden Probleme auf:
-
Ansicht
<Ansichtsname>
ist veraltet – Diese Meldung weist normalerweise auf eine Typenabweichung zwischen der Ansicht in Hive und Athena hin. Wenn dieselbe Funktion in der Dokumentation zu LanguageManual Hive-UDF- und Presto-Funktionen und -Operatoren unterschiedliche Signaturen hat, versuchen Sie, den nicht übereinstimmenden Datentyp umzuwandeln. -
Funktion nicht registriert – Athena unterstützt die Funktion derzeit nicht. Einzelheiten finden Sie weiter oben in diesem Dokument.