Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel

Di Databricks Runtime 16.4 LTS ke atas, DROP FEATURE menghapus fitur tabel Delta Lake dan menurunkan tingkat protokol tabel ke versi terendah yang mendukung fitur yang tersisa. Gunakan ini hanya untuk memulihkan kompatibilitas dengan versi Runtime Databricks sebelumnya, OpenSharing, atau klien Delta Lake eksternal.

Tidak semua fitur dapat dihilangkan. Lihat Fitur tabel yang didukung.

Note

Dukungan warisan untuk DROP FEATURE tersedia mulai dari Databricks Runtime 14.3 LTS. Databricks merekomendasikan penggunaan Databricks Runtime 16.3 ke atas untuk semua DROP FEATURE perintah, yang menggantikan perilaku warisan. Untuk dokumentasi fungsionalitas warisan, lihat Menghilangkan fitur tabel Delta (warisan).

Menghilangkan fitur Delta Lake

Important

Semua DROP FEATURE operasi berbenturan dengan semua penulisan data bersamaan.

Pembacaan streaming gagal ketika menemukan commit yang mengubah metadata tabel. Anda harus memulai ulang aliran yang terpengaruh. Untuk metode yang direkomendasikan, lihat Pertimbangan produksi untuk Streaming Terstruktur.

Anda harus menggunakan Databricks Runtime 16.3 atau lebih tinggi dan memiliki hak istimewa MODIFY pada tabel Delta Lake yang dituju. Anda hanya dapat menghilangkan satu fitur tabel dengan setiap DROP FEATURE perintah.

Untuk menghilangkan fitur tabel, gunakan sintaks berikut:

ALTER TABLE <table-name> DROP FEATURE <feature-name>

Lihat ALTER TABLE untuk detail selengkapnya.

Perilaku

Saat Anda menghilangkan fitur tabel, Delta Lake secara atom menerapkan perubahan berikut pada tabel:

  • Nonaktifkan properti tabel yang menggunakan fitur tabel.
  • Tulis ulang file data yang mendasar seperlunya untuk menghapus semua jejak fitur tabel dari versi tabel saat ini.
  • Buat sekumpulan titik pemeriksaan terproteksi yang memungkinkan klien pembaca membaca riwayat tabel dengan benar.
  • Tambahkan fitur checkpointProtection tabel penulis ke protokol tabel.
  • Turunkan tingkat protokol tabel ke versi pembaca dan penulis terendah yang mendukung semua fitur tabel yang tersisa. Lihat Protokol terendah yang mungkin.

Fitur checkpointProtectiontabel ini

Saat Anda menghilangkan fitur, Delta Lake menulis ulang data dan metadata dalam riwayat tabel sebagai titik pemeriksaan yang dilindungi untuk menghormati penurunan protokol.

Setelah penurunan tingkat, tabel tidak mengharuskan klien untuk mendukung fitur yang dihilangkan. Titik pemeriksaan yang dilindungi dan fitur checkpointProtection melakukan hal berikut:

  • Klien pembaca yang mendukung fitur tabel yang dihilangkan dapat membaca semua versi riwayat tabel yang tersedia.
  • Klien pembaca yang tidak mendukung fitur yang dihapus dapat membaca versi riwayat tabel mulai dari versi penurunan protokol dan seterusnya.
  • Klien penulis tidak memodifikasi titik pemeriksaan yang dibuat sebelum protokol diturunkan.
  • checkpointProtection menandai titik pemeriksaan penurunan versi protokol sebagai terlindungi, dan operasi pemeliharaan tabel mematuhi penanda tersebut.

Meskipun Anda hanya dapat menghilangkan satu fitur tabel dengan setiap DROP FEATURE perintah, tabel dapat memiliki beberapa titik pemeriksaan yang dilindungi dan fitur yang dihilangkan dalam riwayat tabelnya.

Semua versi Databricks Runtime mendukung checkpointProtection fitur tabel, yang berarti fitur tabel ini tidak memblokir bacaan atau tulis di Azure Databricks.

checkpointProtection tidak memblokir akses baca-saja dari klien OSS Delta Lake. Untuk sepenuhnya menurunkan tingkat tabel dan menghapus checkpointProtection fitur tabel, Anda harus menggunakan TRUNCATE HISTORY. Databricks merekomendasikan hanya menggunakan pola ini jika Anda perlu menulis ke tabel dengan klien Delta eksternal yang tidak mendukung checkpointProtection. Lihat Protokol tabel yang sepenuhnya diturunkan untuk klien lama.

Fitur tabel yang didukung

Anda dapat menghilangkan fitur tabel Delta Lake berikut:

Anda tidak dapat menghilangkan fitur tabel Delta Lake lainnya.

Important

Databricks merekomendasikan agar Anda selalu menguji beban kerja dan sistem dependen untuk kompatibilitas dengan fitur baru sebelum mengaktifkan fitur yang meningkatkan protokol pembaca atau penulis untuk data produksi.

Pertimbangkan hal berikut:

  • Menghilangkan pemetaan kolom dari tabel tidak menghapus awalan acak yang digunakan dalam nama direktori untuk tabel yang dipartisi. Lihat Apakah Danau Delta dan Parquet berbagi strategi pemartisian?.
  • Beberapa fitur Delta Lake memungkinkan beberapa fitur tabel yang bergantung satu sama lain, yang mungkin memblokir Anda dari menghilangkan fitur dependen. Anda tidak dapat mengembalikan fitur yang tidak dapat dihilangkan.

Protokol tabel diturunkan sepenuhnya untuk klien lama

Jika Anda menggunakan klien Delta Lake eksternal untuk operasi penulisan yang tidak mendukung fitur tabel checkpointProtection, Anda harus menggunakan TRUNCATE HISTORY untuk menurunkan protokol tabel sepenuhnya dan menghapus semua jejak fitur tabel yang telah dihapus. Menjalankan TRUNCATE HISTORY menghapus semua riwayat tabel yang lebih lama dari 24 jam.

Databricks merekomendasikan untuk menguji perilaku default untuk DROP FEATURE sebelum menjalankan TRUNCATE HISTORY.

Penurunan versi penuh memerlukan dua langkah yang dilakukan dengan jeda setidaknya 24 jam.

Langkah 1: Bersiap untuk menghilangkan fitur tabel

Jalankan perintah ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY. Perintah menerapkan hal berikut:

  • Memperbarui properti tabel untuk menonaktifkan fitur.
  • Mereset properti tabel terkait untuk fitur ke defaultnya.
  • Menulis ulang file data dan metadata sesuai kebutuhan untuk mencerminkan properti yang diperbarui.
  • Mengembalikan pesan yang mengharuskan Anda menunggu setidaknya 24 jam sebelum menjalankannya lagi untuk menyelesaikan penurunan protokol.

Setelah menonaktifkan fitur, Anda dapat terus menulis ke tabel target sebelum menyelesaikan penurunan protokol, tetapi Anda tidak dapat menggunakan fitur tabel yang Anda hapus.

Note

Jika Anda membiarkan tabel dalam status ini, operasi terhadap tabel tidak menggunakan fitur tabel, tetapi protokol masih mendukung fitur tabel. Hingga Anda menyelesaikan langkah penurunan tingkat akhir, tabel tidak dapat dibaca oleh klien Delta yang tidak mendukung fitur tabel.

Langkah 2: Menurunkan tingkat protokol dan menghilangkan fitur tabel

Setelah setidaknya 24 jam, jalankan ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY perintah lagi. Perintah menerapkan hal berikut:

  • Memangkas riwayat tabel hingga ambang retensi.
  • Memastikan tidak ada transaksi tersisa yang menggunakan fitur ini.
  • Menghilangkan fitur dan menurunkan tingkat protokol tabel ke versi terendah yang mendukung fitur yang tersisa.

Important

Menjalankan ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY menghapus semua data log transaksi yang lebih lama dari 24 jam. Setelah menggunakan perintah ini untuk menurunkan tingkat protokol tabel, Anda tidak dapat mengakses riwayat tabel atau perjalanan waktu.

Lihat Kompatibilitas dan protokol fitur Delta Lake.