Pembaruan dalam tabel dengan partisi - Amazon Athena

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

Pembaruan dalam tabel dengan partisi

Di Athena, tabel dan partisi yang harus menggunakan format data yang sama tetapi skema mereka mungkin berbeda. Saat Anda membuat partisi baru, partisi yang biasanya mewarisi skema tabel. Seiring waktu, skema mungkin mulai berbeda. Alasan meliputi:

  • Jika skema tabel Anda perubahan, skema untuk partisi tidak diperbarui untuk tetap sinkron dengan tabel skema.

  • AWS Glue Crawler memungkinkan Anda menemukan data dalam partisi dengan skema yang berbeda. Ini berarti bahwa jika Anda membuat tabel di Athena dengan AWS Glue, setelah crawler selesai diproses, skema untuk tabel dan partisinya mungkin berbeda.

  • Jika Anda menambahkan partisi secara langsung menggunakan AWS API.

Athena memproses tabel dengan partisi berhasil jika mereka memenuhi kendala berikut. Jika kendala ini tidak terpenuhi, Athena mengeluarkanHIVE_PARTITION_SCHEMA_MISMATCHkesalahan.

  • Setiap skema partisi kompatibel dengan skema tabel.

  • Format data tabel memungkinkan jenis pembaruan yang ingin Anda lakukan: menambah, menghapus, menyusun ulang kolom, atau mengubah jenis data kolom.

    Misalnya, untuk format CSV dan TSV, Anda dapat mengganti nama kolom, menambahkan kolom baru di ujung tabel, dan mengubah jenis data kolom jika jenisnya kompatibel, tetapi Anda tidak dapat menghapus kolom. Untuk format lain, Anda dapat menambahkan atau menghapus kolom, atau mengubah jenis data kolom yang lain jika jenis kompatibel. Untuk informasi selengkapnya, lihat Pembaruan dan Format Data di Athena.

Menghindari kesalahan ketidakcocokan skema untuk tabel dengan partisi

Pada awal eksekusi kueri, Athena memverifikasi skema tabel dengan memeriksa bahwa setiap jenis data kolom kompatibel antara tabel dan partisi.

  • Untuk jenis penyimpanan data Parquet dan ORC, Athena bergantung pada nama kolom dan menggunakannya untuk verifikasi skema berbasis nama kolom. Ini menghilangkanHIVE_PARTITION_SCHEMA_MISMATCHkesalahan untuk tabel dengan partisi di Parquet dan ORC. (Ini berlaku untuk ORC jika SerDe properti diatur untuk mengakses indeks dengan nama:orc.column.index.access=FALSE. Parket membaca indeks dengan nama secara default).

  • Untuk CSV, JSON, dan Avro, Athena menggunakan verifikasi skema berbasis indeks. Ini berarti bahwa jika Anda mengalami kesalahan ketidakcocokan skema, Anda harus drop partisi yang menyebabkan ketidakcocokan skema dan menciptakan itu, sehingga Athena dapat mengkueri tanpa gagal.

Athena membandingkan skema tabel untuk skema partisi. Jika Anda membuat tabel di CSV, JSON, dan AVRO di Athena dengan AWS Glue Crawler, setelah Crawler selesai diproses, skema untuk tabel dan partisinya mungkin berbeda. Jika ada ketidakcocokan antara skema tabel dan skema partisi, pertanyaan Anda gagal di Athena karena kesalahan verifikasi skema yang mirip dengan ini:'crawler_test.click_avro' dinyatakan sebagai tipe 'string', tetapi partisi 'partition_0=2017-01-17' menyatakan kolom 'col68' sebagai tipe 'double'.”

Solusi khas untuk kesalahan tersebut adalah untuk menjatuhkan partisi yang menyebabkan kesalahan dan menciptakan itu. Lihat informasi yang lebih lengkap di ALTER TABLE DROP PARTITION dan ALTER TABLE ADD PARTITION.