Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk membuat tabel, Anda dapat menjalankan pernyataan DDL di konsol Athena, menggunakan formulir tabel Athena Create, atau menggunakan driver JDBC atau ODBC. Athena menggunakan Apache Hive untuk mendefinisikan tabel dan membuat basis data, yang pada dasarnya adalah namespace logis dari tabel. Athena mendukung berbagai pustaka serializer-deserializer (SerDe) untuk membuat tabel untuk format data tertentu. Untuk daftar SerDe pustaka yang didukung, lihatPilih SerDe untuk data Anda.
Jika Anda membuat basis data dan tabel di Athena, Anda hanya menggambarkan skema dan lokasi tempat data tabel terletak di Amazon S3 untuk mengkueri read-time. Athena tidak mengubah data Anda di Amazon S3. Basis data dan tabel, oleh karena itu, memiliki arti yang sedikit berbeda dari yang arti mereka untuk sistem basis data relasional tradisional karena data tidak disimpan bersama dengan definisi skema untuk basis data dan tabel.
Athena menyimpan skema dalam AWS Glue Data Catalog dan menggunakannya untuk membaca data ketika Anda query tabel menggunakan SQL. schema-on-readPendekatan ini, yang memproyeksikan skema ke data Anda saat Anda menjalankan kueri, menghilangkan kebutuhan untuk pemuatan atau transformasi data.
Pertimbangan dan batasan
Berikut adalah beberapa batasan dan pertimbangan penting untuk tabel di Athena.
Pertimbangan Amazon S3
Saat Anda membuat tabel, Anda menentukan lokasi bucket Amazon S3 untuk data dasar menggunakan klausa LOCATION
. Pertimbangkan hal berikut:
-
Athena hanya dapat mengkueri versi terbaru dari data pada bucket Amazon S3 berversi, dan tidak dapat mengkueri versi sebelumnya dari data.
-
Anda harus memiliki izin untuk bekerja dengan data di lokasi Amazon S3. Untuk informasi selengkapnya, lihat Kontrol akses ke Amazon S3 dari Athena.
-
Athena mendukung kueri objek yang disimpan dengan beberapa kelas penyimpanan dalam bucket yang sama ditentukan oleh klausa
LOCATION
. Misalnya, Anda dapat mengkueri data dalam objek yang disimpan di kelas Penyimpanan yang berbeda (Standard, Standar-IA dan Intelligent-Tiering) di Amazon S3. -
Athena mendukung ember Requester Pays. Untuk informasi cara mengaktifkan Requester Pays untuk bucket dengan data sumber yang ingin Anda kueri di Athena, lihat. Buat grup kerja
-
Anda dapat menggunakan Athena untuk menanyakan objek yang dipulihkan dari kelas penyimpanan S3 Glacier Flexible Retrieval (sebelumnya Glacier) dan S3 Glacier Deep Archive kelas penyimpanan Amazon S3 tetapi Anda harus mengaktifkan kemampuan pada basis per tabel. Jika Anda tidak mengaktifkan fitur pada tabel sebelum menjalankan kueri, Athena melewatkan semua objek S3 Glacier Flexible Retrieval dan S3 Glacier Deep Archive tabel selama eksekusi kueri. Untuk informasi selengkapnya, lihat Kueri memulihkan objek Amazon S3 Glacier.
Untuk informasi tentang kelas penyimpanan, lihat Kelas penyimpanan, Mengubah kelas penyimpanan objek di amazon S3, Transisi ke kelas penyimpanan GLACIER (arsip objek), dan Bucket Requester Pays di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
-
Jika Anda mengeluarkan kueri terhadap bucket Amazon S3 dengan sejumlah besar objek dan data tidak dipartisi, kueri tersebut dapat memengaruhi batas kecepatan Dapatkan permintaan di Amazon S3 dan menyebabkan pengecualian Amazon S3. Untuk mencegah kesalahan, partisi data Anda. Selain itu, pertimbangkan untuk menyetel tingkat permintaan Amazon S3 Anda. Untuk informasi selengkapnya, lihat Pertimbangan tingkat permintaan dan kinerja.
Untuk informasi selengkapnya tentang menentukan lokasi untuk data Anda di Amazon S3, lihat. Tentukan lokasi tabel di Amazon S3
Pertimbangan lainnya
-
Transformasi data transaksional tidak didukung - Athena tidak mendukung operasi berbasis transaksi (seperti yang ditemukan di Hive atau Presto) pada data tabel. Untuk daftar lengkap kata kunci yang tidak didukung, lihat: DDL Tidak Didukung.
-
Operasi pada tabel adalah ACID — Saat Anda membuat, memperbarui, atau menghapus tabel, operasi tersebut dijamin sesuai dengan ACID. Sebagai contoh, jika beberapa pengguna atau klien mencoba untuk membuat atau mengubah tabel yang ada pada saat yang sama, hanya satu akan berhasil.
-
Tabel adalah EKSTERNAL — Kecuali saat membuat tabel Iceberg, selalu gunakan kata kunci.
EXTERNAL
Jika Anda menggunakanCREATE TABLE
tanpaEXTERNAL
kata kunci untuk tabel non-Iceberg, Athena mengeluarkan kesalahan. Saat Anda menjatuhkan tabel di Athena, hanya metadata tabel dihapus; data tetap di Amazon S3. -
Panjang string kueri maksimum - Panjang string kueri maksimum adalah 256 KB.
Jika Anda menggunakan operasi AWS Glue CreateTableAPI atau AWS CloudFormation
AWS::Glue::Table
template untuk membuat tabel untuk digunakan di Athena tanpa menentukanTableType
properti dan kemudian menjalankan kueri DDL sepertiSHOW CREATE TABLE
atauMSCK REPAIR TABLE
, Anda dapat menerima pesan kesalahanGAGAL: NullPointerException
Nama adalah null.Untuk mengatasi kesalahan, tentukan nilai TableInput
TableType
atribut sebagai bagian dari panggilan AWS GlueCreateTable
API atau AWS CloudFormation templat. Nilai yang mungkin untukTableType
includeEXTERNAL_TABLE
atauVIRTUAL_VIEW
.Persyaratan ini hanya berlaku ketika Anda membuat tabel menggunakan operasi AWS Glue
CreateTable
API atauAWS::Glue::Table
template. Jika Anda membuat tabel untuk Athena menggunakan pernyataan DDL atau AWS Glue crawler,TableType
properti didefinisikan untuk Anda secara otomatis.