Buat tabel di Athena - Amazon Athena

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

Buat tabel di Athena

Untuk membuat tabel, Anda dapat menjalankan DDL pernyataan di konsol Athena, menggunakan formulir Athena Buat tabel, atau menggunakan atau driver. JDBC 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 di AWS Glue Data Catalog dan menggunakannya untuk membaca data saat Anda menanyakan tabel menggunakanSQL. 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 GLACIER penyimpanan (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 Tidak didukung DDL.

  • Operasi pada tabel adalah ACID — Saat Anda membuat, memperbarui, atau menghapus tabel, operasi tersebut dijamin ACID sesuai. 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 EXTERNAL — Kecuali saat membuat tabel Iceberg, selalu gunakan kata kunci. EXTERNAL Jika Anda menggunakan CREATE TABLE tanpa EXTERNAL 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 AWS Glue CreateTableAPIoperasi atau AWS CloudFormation AWS::Glue::Tabletemplate untuk membuat tabel untuk digunakan di Athena tanpa menentukan TableType properti dan kemudian menjalankan DDL query seperti SHOW CREATE TABLE atauMSCK REPAIR TABLE, Anda dapat menerima pesan kesalahan FAILED: NullPointerException Nama adalah null.

    Untuk mengatasi kesalahan, tentukan nilai untuk TableInputTableTypeatribut sebagai bagian dari AWS Glue CreateTableAPIpanggilan atau AWS CloudFormation templat. Nilai yang mungkin untuk TableType include EXTERNAL_TABLE atauVIRTUAL_VIEW.

    Persyaratan ini hanya berlaku ketika Anda membuat tabel menggunakan AWS Glue CreateTableAPIoperasi atau AWS::Glue::Table template. Jika Anda membuat tabel untuk Athena dengan menggunakan DDL pernyataan atau AWS Glue crawler, TableType properti didefinisikan untuk Anda secara otomatis.