Arbeiten mit Hive-Ansichten - Amazon Athena

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 von avg(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 nicht md5(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 die pos-Spalte als BIGINT. Aus diesem Grund müssen Sie möglicherweise die pos-Spalte in BIGINT 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 in DECIMAL(x,y) umgewandelt wird, kann die folgende Syntax zu einer View 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 durch int double. In Athena erzeugt dieselbe Operation einen abgeschnittenen int.

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-Funktion BIGINT statt INT 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-Funktion BIGINT anstelle von INT 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.