Bekerja dengan tampilan Hive - Amazon Athena

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

Bekerja dengan tampilan Hive

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. Menggunakan Athena Data Connector untuk Eksternal Hive Metastore

Pertimbangan dan batasan

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 UDF khusus 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

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.

Fungsi agregat

Fungsi agregat yang membutuhkan penanganan khusus

Fungsi agregat berikut untuk tampilan Hive memerlukan penanganan khusus.

  • Rata-rata — Alih-alihavg(INT i), gunakanavg(CAST(i AS DOUBLE)).

Fungsi agregat tidak didukung

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

covar_pop histogram_numeric ntile percentile percentile_approx

Fungsi regresi sepertiregr_count,regr_r2, dan tidak regr_sxx didukung di Athena untuk tampilan Hive.

Fungsi tanggal tidak didukung

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

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

Fungsi lain-lain

Fungsi lain-lain yang membutuhkan penanganan khusus

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

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

Operator yang membutuhkan penanganan khusus

Operator berikut untuk tampilan Hive memerlukan penanganan khusus.

  • Operator mod (%) - Karena DOUBLE tipe secara implisit melemparkan keDECIMAL(x,y), sintaks berikut dapat menyebabkan pesan kesalahan View is stale:

    a_double % 1.0 AS column

    Untuk mengatasi masalah ini, gunakanCAST, seperti pada contoh berikut.

    CAST(a_double % 1.0 as DOUBLE) AS column
  • Operator divisi (/) — Di Hive, int dibagi dengan int menghasilkan adouble. Di Athena, operasi yang sama menghasilkan terpotong. int

Operator tidak didukung

Athena tidak mendukung operator berikut untuk tampilan Hive.

~A — bitwise NOT

A ^ b — bitwise XOR

A & b — bitwise AND

A | b — bitwise OR

A <=> b — Mengembalikan hasil yang sama dengan operator sama dengan (=) untuk operan non-null. Mengembalikan TRUE FALSE jika keduanyaNULL, jika salah satunyaNULL.

Fungsi string

Fungsi string yang membutuhkan penanganan khusus

Fungsi string Hive berikut untuk tampilan Hive memerlukan penanganan khusus.

  • chr (bigint|double 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-alihINT, gunakan sintaks berikut sehingga tampilan tidak akan dianggap basi:

    CAST(length(string str) as INT)

Fungsi string tidak didukung

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)

Fungsi XPath tidak didukung

Hive XPath berfungsi sepertixpath,xpath_short, dan tidak xpath_int didukung di Athena untuk tampilan Hive.

Pemecahan Masalah

Saat Anda menggunakan tampilan Hive di Athena, Anda mungkin mengalami masalah berikut:

  • Tampilan basi <view name>— Pesan ini biasanya menunjukkan ketidakcocokan tipe antara tampilan di Hive dan Athena. Jika fungsi yang sama dalam fungsi Hive LanguageManual UDF dan Presto dan dokumentasi operator 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.