

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan tampilan Hive
<a name="hive-views"></a>

Anda dapat menggunakan Athena untuk menanyakan tampilan yang ada di metastores Apache Hive eksternal Anda. Athena menerjemahkan pandangan Anda untuk Anda on-the-fly saat runtime tanpa mengubah tampilan asli atau menyimpan terjemahannya.

Misalnya, Anda memiliki tampilan Hive seperti berikut yang menggunakan sintaks yang tidak didukung di Athena seperti: `LATERAL VIEW explode()`

```
CREATE VIEW team_view AS 
SELECT team, score 
FROM matches 
LATERAL VIEW explode(scores) m AS score
```

Athena menerjemahkan string kueri tampilan Hive menjadi pernyataan seperti berikut yang dapat dijalankan Athena:

```
SELECT team, score
FROM matches
CROSS JOIN UNNEST(scores) AS m (score)
```

Untuk informasi tentang menghubungkan metastore Hive eksternal ke Athena, lihat. [Gunakan metastore Hive eksternal](connect-to-data-source-hive.md)

## Pertimbangan dan batasan
<a name="hive-views-considerations-and-limitations"></a>

Saat menanyakan pandangan Hive dari Athena, pertimbangkan hal-hal berikut:
+ Athena tidak mendukung pembuatan tampilan Hive. Anda dapat membuat tampilan Hive di metastore Hive eksternal Anda, yang kemudian dapat Anda kueri dari Athena.
+ Athena tidak mendukung kebiasaan UDFs untuk tampilan Hive.
+ Karena masalah yang diketahui di konsol Athena, tampilan Sarang muncul di bawah daftar tabel, bukan daftar tampilan.
+ Meskipun proses penerjemahan otomatis, fungsi Hive tertentu tidak didukung untuk tampilan Hive atau memerlukan penanganan khusus. Untuk informasi selengkapnya, lihat bagian berikut.

## Keterbatasan dukungan fungsi sarang
<a name="hive-views-function-limitations"></a>

Bagian ini menyoroti fungsi Sarang yang tidak didukung Athena untuk tampilan Hive atau yang memerlukan perlakuan khusus. Saat ini, karena Athena terutama mendukung fungsi dari Hive 2.2.0, fungsi yang hanya tersedia dalam versi yang lebih tinggi (seperti Hive 4.0.0) tidak tersedia. Untuk daftar lengkap fungsi Hive, lihat [Manual bahasa Hive UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf).

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

#### Fungsi agregat yang membutuhkan penanganan khusus
<a name="hive-views-aggregate-functions-special-handling"></a>

Fungsi agregat berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **Rata-rata** — Alih-alih`avg(INT i)`, gunakan`avg(CAST(i AS DOUBLE))`.

#### Fungsi agregat tidak didukung
<a name="hive-views-aggregate-functions-not-supported"></a>

Fungsi agregat Hive berikut tidak didukung di Athena untuk tampilan Hive.

```
covar_pop
histogram_numeric
ntile
percentile
percentile_approx
```

Fungsi regresi seperti`regr_count`,`regr_r2`, dan tidak `regr_sxx` didukung di Athena untuk tampilan Hive.

### Fungsi tanggal tidak didukung
<a name="hive-views-date-functions-not-supported"></a>

Fungsi tanggal sarang berikut tidak didukung di Athena untuk tampilan 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)
```

### Fungsi masking tidak didukung
<a name="hive-views-masking-functions-not-supported"></a>

Fungsi penyembunyian sarang seperti`mask()`, dan tidak `mask_first_n()` didukung di Athena untuk tampilan Sarang.

### Fungsi lain-lain
<a name="hive-views-miscellaneous-functions"></a>

#### Fungsi lain-lain yang membutuhkan penanganan khusus
<a name="hive-views-supported-miscellaneous-functions-special-handling"></a>

Fungsi lain-lain berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **md5** — Athena `md5(binary)` mendukung tetapi tidak. `md5(varchar)`
+ **Meledak** - Athena `explode` mendukung ketika digunakan dalam sintaks berikut:

  ```
  LATERAL VIEW [OUTER] EXPLODE(<argument>)
  ```
+ **Posexplode -** Athena mendukung `posexplode` ketika digunakan dalam sintaks berikut:

  ```
  LATERAL VIEW [OUTER] POSEXPLODE(<argument>)           
  ```

  Dalam `(pos, val)` output, Athena memperlakukan `pos` kolom sebagai. `BIGINT` Karena itu, Anda mungkin perlu mentransmisikan `pos` kolom `BIGINT` untuk menghindari tampilan basi. Contoh berikut menggambarkan teknik ini.

  ```
  SELECT CAST(c AS BIGINT) AS c_bigint, d 
  FROM table LATERAL VIEW POSEXPLODE(<argument>) t AS c, d
  ```

#### Fungsi lain-lain tidak didukung
<a name="hive-views-unsupported-miscellaneous-functions-not-supported"></a>

Fungsi Hive berikut tidak didukung di Athena untuk tampilan Hive.

```
aes_decrypt
aes_encrypt
current_database
current_user
inline
java_method
logged_in_user
reflect
sha/sha1/sha2
stack
version
```

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

#### Operator yang membutuhkan penanganan khusus
<a name="hive-views-operators-special-handling"></a>

Operator berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **Operator mod (%)** - Karena `DOUBLE` tipe secara implisit melemparkan ke`DECIMAL(x,y)`, sintaks berikut dapat menyebabkan pesan kesalahan View is stale:

  ```
  a_double % 1.0 AS column
  ```

  Untuk mengatasi masalah ini, gunakan`CAST`, seperti pada contoh berikut.

  ```
  CAST(a_double % 1.0 as DOUBLE) AS column
  ```
+ **Operator divisi (/)** — Di Hive, `int` dibagi dengan `int` menghasilkan a`double`. Di Athena, operasi yang sama menghasilkan terpotong. `int`

#### Operator tidak didukung
<a name="hive-views-operators-not-supported"></a>

Athena tidak mendukung operator berikut untuk tampilan Hive.

**\$1A — bitwise** `NOT`

**A ^ b** — bitwise `XOR`

**A & b** — bitwise `AND`

**A \$1 b** — bitwise `OR`

**A <=> b** — Mengembalikan hasil yang sama dengan operator sama dengan (`=`) untuk operan non-null. Mengembalikan `TRUE` `FALSE` jika keduanya`NULL`, jika salah satunya`NULL`.

### Fungsi string
<a name="hive-views-string-functions"></a>

#### Fungsi string yang membutuhkan penanganan khusus
<a name="hive-views-string-functions-special-handling"></a>

Fungsi string Hive berikut untuk tampilan Hive memerlukan penanganan khusus.
+ **chr (bigint\$1double a)** — Hive memungkinkan argumen negatif; Athena tidak.
+ **instr (string str, string substr) - Karena** pemetaan Athena untuk `instr` fungsi kembali `BIGINT` alih-alih, gunakan sintaks berikut: `INT`

  ```
  CAST(instr(string str, string substr) as INT)         
  ```

  Tanpa langkah ini, tampilan akan dianggap basi.
+ **length (string a)** - Karena pemetaan Athena untuk `length` fungsi kembali `BIGINT` alih-alih`INT`, gunakan sintaks berikut sehingga tampilan tidak akan dianggap basi:

  ```
  CAST(length(string str) as INT)
  ```

#### Fungsi string tidak didukung
<a name="hive-views-string-functions-not-supported"></a>

Fungsi string Hive berikut tidak didukung di Athena untuk tampilan Hive.

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

 XPath Fungsi sarang seperti`xpath`,`xpath_short`, dan tidak `xpath_int` didukung di Athena untuk tampilan Sarang.

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

Saat Anda menggunakan tampilan Hive di Athena, Anda mungkin mengalami masalah berikut:
+ **Tampilan *<view name>* basi** — Pesan ini biasanya menunjukkan ketidakcocokan tipe antara tampilan di Hive dan Athena. Jika fungsi yang sama dalam fungsi [Hive LanguageManual UDF](https://cwiki.apache.org/confluence/display/hive/languagemanual+udf) dan [Presto dan dokumentasi operator](https://prestodb.io/docs/current/functions.html) memiliki tanda tangan yang berbeda, coba casting tipe data yang tidak cocok.
+ **Fungsi tidak terdaftar** - Athena saat ini tidak mendukung fungsi tersebut. Untuk detailnya, lihat informasi sebelumnya dalam dokumen ini.