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. Gunakan metastore Hive eksternal
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 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
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
Fungsi agregat
Fungsi agregat yang membutuhkan penanganan khusus
Fungsi agregat berikut untuk tampilan Hive memerlukan penanganan khusus.
-
Rata-rata — Alih-alih
avg(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 memperlakukanpos
kolom sebagai.BIGINT
Karena itu, Anda mungkin perlu mentransmisikanpos
kolomBIGINT
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 kesalahanView 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 denganint
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 kembaliBIGINT
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 kembaliBIGINT
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)
XPathfungsi tidak didukung
XPathFungsi sarang sepertixpath
,xpath_short
, dan tidak xpath_int
didukung di Athena untuk tampilan Sarang.
Pemecahan Masalah
Saat Anda menggunakan tampilan Hive di Athena, Anda mungkin mengalami masalah berikut:
-
Lihat
<view name>
basi — Pesan ini biasanya menunjukkan ketidakcocokan tipe antara tampilan di Hive dan Athena. Jika fungsi yang sama dalam fungsi Hive LanguageManual UDFdan 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.