

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
<a name="hive-views"></a>

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 [Einen externen Hive-Metastore verwenden](connect-to-data-source-hive.md).

## Überlegungen und Einschränkungen
<a name="hive-views-considerations-and-limitations"></a>

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 Ansichten 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
<a name="hive-views-function-limitations"></a>

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](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf).

### Aggregationsfunktionen
<a name="hive-views-aggregate-functions"></a>

#### Aggregatfunktionen, die eine besondere Handhabung erfordern
<a name="hive-views-aggregate-functions-special-handling"></a>

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
<a name="hive-views-aggregate-functions-not-supported"></a>

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

### Datumsfunktionen werden nicht unterstützt
<a name="hive-views-date-functions-not-supported"></a>

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
<a name="hive-views-masking-functions-not-supported"></a>

Hive-Maskierungsfunktionen wie `mask()` und `mask_first_n()` werden in Athena für Hive-Ansichten nicht unterstützt.

### Verschiedene Funktionen
<a name="hive-views-miscellaneous-functions"></a>

#### Aggregatfunktionen, die eine besondere Handhabung erfordern
<a name="hive-views-supported-miscellaneous-functions-special-handling"></a>

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
<a name="hive-views-unsupported-miscellaneous-functions-not-supported"></a>

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
```

### Betreiber
<a name="hive-views-operators"></a>

#### Betreiber, die eine Sonderverarbeitung benötigen
<a name="hive-views-operators-special-handling"></a>

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
<a name="hive-views-operators-not-supported"></a>

Athena unterstützt die folgenden Operatoren für Hive-Ansichten nicht.

**\$1A** – Bitwise `NOT`

**A ^ b** – Bitwise `XOR`

**A & b** – Bitwise `AND`

**A \$1 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
<a name="hive-views-string-functions"></a>

#### Zeichenfolgen-Funktionen, die eine besondere Handhabung erfordern
<a name="hive-views-string-functions-special-handling"></a>

Die folgenden Hive-Zeichenfolgen-Funktionen für Hive-Ansichten erfordern eine besondere Handhabung.
+ **chr(bigint\$1double 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
<a name="hive-views-string-functions-not-supported"></a>

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
<a name="hive-views-xpath-functions-not-supported"></a>

 XPath Hive-Funktionen wie `xpath``xpath_short`, und `xpath_int` werden in Athena for Hive-Ansichten nicht unterstützt.

## Fehlerbehebung
<a name="hive-views-troubleshooting"></a>

Wenn Sie Hive-Ansichten in Athena verwenden, treten möglicherweise die folgenden Probleme auf:
+ **Ansicht *<view name>* ist veraltet** — Diese Meldung weist normalerweise auf einen Typkonflikt zwischen der Ansicht in Hive und Athena hin. Wenn dieselbe Funktion in der Dokumentation zu [ LanguageManual Hive-UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf) - und [Presto-Funktionen und -Operatoren](https://prestodb.io/docs/current/functions.html) 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.