Dukungan pengarsipan di Azure Databricks

Penting

Fitur ini ada di Pratinjau Publik untuk Databricks Runtime 13.3 LTS atau versi lebih tinggi.

Dengan dukungan arsip di Azure Databricks, Anda dapat menggunakan kebijakan siklus hidup berbasis cloud pada penyimpanan objek cloud yang berisi tabel Delta Lake. Mengaktifkan dukungan arsip pada tabel Delta Lake secara efektif memberi tahu Azure Databricks untuk mengabaikan file yang lebih lama dari periode yang ditentukan dalam tabel.

Kebijakan siklus hidup cloud mengurangi biaya penyimpanan dengan memindahkan file lama ke tingkat penyimpanan arsip. Tanpa dukungan arsip, kebijakan siklus hidup dapat menyebabkan kueri gagal terhadap tabel Delta Lake, karena file data yang dibaca kueri tersebut tidak lagi tersedia. Lihat Mengapa Anda harus mengaktifkan dukungan arsip?.

Kapan menggunakan dukungan arsip

Aktifkan dukungan arsip pada tabel ketika semua hal berikut benar:

  • Anda menggunakan kebijakan siklus hidup yang mengarsipkan file data tabel berdasarkan waktu pembuatan file.
  • Sebagian besar kueri terhadap tabel membaca data terbaru atau mengecualikan file yang diarsipkan.
  • Kueri yang membutuhkan data yang diarsipkan jarang terjadi, dan Anda bisa menunggu seseorang memulihkan file-file tersebut di penyimpanan penyedia cloud Anda sebelum menjalankan ulang kueri. Lihat Memulihkan file yang diarsipkan.

Jangan gunakan dukungan arsip jika kueri Anda secara rutin memindai riwayat penuh tabel. Kueri yang memerlukan file arsip mengalami kegagalan. Dukungan arsip juga tidak bekerja dengan kebijakan siklus hidup berdasarkan waktu akses atau tag. Lihat Batasan.

Persyaratan

Azure Databricks hanya memiliki dukungan pengarsipan untuk Azure Archive. Lihat Dokumen Azure tentang mengoptimalkan biaya dengan manajemen siklus hidup.

Mengapa Anda harus mengaktifkan dukungan arsip?

Dukungan arsip hanya mengizinkan kueri yang mengembalikan hasil yang benar tanpa menyentuh file arsip. Kueri ini mencakup kueri yang:

  • Kueri hanya metadata.
  • Memiliki filter yang tidak memerlukan pemindaian file yang diarsipkan.

Semua kueri yang memerlukan data dalam file yang diarsipkan gagal.

Penting

Azure Databricks tidak pernah mengembalikan hasil untuk kueri yang memerlukan file yang diarsipkan untuk mengembalikan hasil yang benar.

Mengaktifkan dukungan arsip untuk tabel di Azure Databricks tidak membuat atau mengubah kebijakan siklus hidup yang ditentukan untuk penyimpanan objek cloud Anda. Lihat Mengubah aturan transisi manajemen siklus hidup.

Tanpa dukungan arsip, operasi terhadap tabel Delta Lake mungkin gagal karena file data atau log transaksi telah dipindahkan ke lokasi arsip dan tidak tersedia saat dikueri. Dukungan penyimpanan arsip memperkenalkan pengoptimalan untuk menghindari kueri data yang diarsipkan jika memungkinkan. Ini juga menambahkan sintaks baru untuk mengidentifikasi file yang harus dipulihkan dari penyimpanan arsip ke kueri lengkap.

Kueri yang dioptimalkan untuk data yang diarsipkan

Dukungan pengarsipan di Azure Databricks mengoptimalkan kueri ini terhadap tabel Delta Lake.

Kueri Perilaku yang baru
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Abaikan file yang diarsipkan secara otomatis dan kembalikan hasil dari data dalam tingkat penyimpanan yang tidak diarsipkan.
Perintah pemeliharaan Delta Lake: OPTIMIZE, , ZORDER, ANALYZEPURGE Abaikan file yang diarsipkan secara otomatis dan jalankan pemeliharaan pada tabel lainnya.
Pernyataan DDL dan DML yang menimpa data atau menghapus data, termasuk REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, dan DROP TABLE Tandai entri log transaksi untuk file data yang diarsipkan target sebagai dihapus.
FSCK REPAIR TABLE Abaikan file yang diarsipkan dan hanya periksa file yang belum mencapai kebijakan siklus hidup.

Kegagalan awal dan pesan kesalahan

Untuk kueri yang harus memindai file arsip untuk menghasilkan hasil yang benar, mengonfigurasi dukungan arsip untuk Delta Lake memiliki efek berikut:

  • Kueri gagal lebih awal jika mereka mencoba mengakses file yang diarsipkan, mengurangi komputasi yang terbuang dan memungkinkan pengguna untuk beradaptasi dan menjalankan kembali kueri dengan cepat.
  • Pesan kesalahan memberi tahu pengguna bahwa kueri telah gagal karena kueri mencoba mengakses file yang diarsipkan.

Pengguna dapat menghasilkan laporan file yang harus dipulihkan menggunakan sintaks SHOW ARCHIVED FILES. Lihat Menampilkan file yang diarsipkan.

Penting

Jika Anda mendapatkan kesalahan Not enough files to satisfy LIMIT, tabel Anda tidak memiliki cukup baris data dalam file yang tidak diarsarkis untuk memenuhi jumlah rekaman yang ditentukan oleh LIMIT. Turunkan klausa LIMIT untuk menemukan baris yang tidak diarsipkan yang cukup untuk memenuhi LIMIT. Lihat Batasan.

Aktifkan dukungan pengarsipan

Anda mengaktifkan dukungan arsip untuk tabel Delta Lake dengan menentukan interval arsip secara manual yang dikonfigurasi dalam kebijakan manajemen siklus hidup cloud yang mendasarinya.

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

timeUntilArchived Mengatur waktu memberi tahu Azure Databricks untuk mengabaikan file di tabel Delta Lake Anda yang lebih lama dari periode waktu yang ditentukan. Pengaturan ini terpisah dari kebijakan siklus hidup akun cloud Anda. Perubahan pada satu tidak mempengaruhi yang lain. Anda juga harus memperbarui pengaturan penyimpanan arsip pada tabel Delta Lake setelah memperbarui kebijakan lifecycle di dalam akun cloud Anda. Lihat Mengubah aturan transisi manajemen siklus hidup.

Saat Anda menetapkan kebijakan siklus hidup baru di akun cloud Anda, diperlukan waktu hingga 24 jam agar perubahan diterapkan. Lihat Eksekusi kebijakan manajemen siklus hidup.

Jika Anda mengaktifkan pengaturan ini tanpa kebijakan siklus hidup yang ditetapkan untuk penyimpanan objek cloud Anda, dukungan pengarsipan memungkinkan kueri berhasil, dan hasilnya menyertakan data dari file yang ditandai untuk pengarsipan. Lihat Bagaimana Azure Databricks menyampling data yang sudah dipulihkan?.

Peringatan

Kebijakan siklus hidup cloud Anda tidak boleh mengarsipkan log transaksi Delta (_delta_log/ direktori). Lihat Batasan.

Penting

Dukungan arsip sepenuhnya bergantung pada lingkungan komputasi Azure Databricks yang kompatibel dan hanya berfungsi untuk tabel Delta Lake. Mengonfigurasi dukungan pengarsipan tidak mengubah perilaku, kompatibilitas, atau dukungan di klien OSS Delta Lake atau Databricks Runtime 12.2 LTS dan di bawahnya.

Perlihatkan file yang diarsipkan

Untuk mengidentifikasi file yang harus dipulihkan untuk menyelesaikan kueri tertentu, gunakan SHOW ARCHIVED FILES.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Operasi ini mengembalikan nama file untuk file yang diarsipkan sebagai Spark DataFrame. Pulihkan file yang diarsipkan yang diperlukan dengan mengikuti instruksi terdokumen dari penyedia penyimpanan objek Anda. Lihat Memulihkan file yang diarsipkan.

Untuk informasi tentang cara Azure Databricks memeriksa data yang dipulihkan, lihat Bagaimana Azure Databricks memeriksa sampel data yang dipulihkan?.

Catatan

Selama operasi ini, Delta Lake hanya memiliki akses ke statistik data yang terkandung dalam log transaksi. Secara default, berikut adalah statistik yang dikumpulkan pada 32 kolom pertama dalam tabel:

  • Nilai minimum
  • Nilai maksimum
  • Jumlah Nol
  • Jumlah total rekaman

File yang dikembalikan mencakup semua file yang diarsipkan yang harus dibaca untuk menentukan apakah rekaman yang memenuhi predikat ada dalam file atau tidak. Databricks merekomendasikan untuk memberikan predikat yang mencakup bidang di mana data dipartisi, diurutkan z, atau diklusterkan untuk mengurangi jumlah file yang harus dipulihkan.

Memulihkan file yang diarsipkan

Untuk mengidentifikasi semua file yang memerlukan pemulihan, gunakan SHOW ARCHIVED FILES untuk melihat daftar file yang diarsipkan.

Gunakan API rehidrasi untuk memulihkan file ke tingkat penyimpanan online. Lihat Rehidrasi blob dari tingkat arsip.

Setelah memulihkan file di penyimpanan penyedia cloud, Anda bisa mengkueri tabel Anda. Dukungan arsip secara otomatis mengenali file yang dipulihkan. Untuk informasi tentang cara Azure Databricks memeriksa data yang dipulihkan, lihat Bagaimana Azure Databricks memeriksa sampel data yang dipulihkan?.

Memperbarui atau menghapus data yang diarsipkan

Operasi akan gagal jika Anda menjalankan operasi MERGE, UPDATE, atau DELETE yang memengaruhi data dalam file yang diarsipkan. Anda harus memulihkan data ke tingkat penyimpanan yang mendukung pengambilan cepat untuk menjalankan operasi ini. Gunakan SHOW ARCHIVED FILES untuk menentukan file yang harus Anda pulihkan (lihat Memulihkan file yang diarsipkan).

Bagaimana Azure Databricks melakukan sampling untuk data yang dipulihkan?

Saat Azure Databricks menyiapkan pemindaian atas tabel dengan dukungan pengarsipan diaktifkan, Azure Databricks mengambil sampel file yang lebih lama dari periode retensi yang ditentukan yang diperlukan oleh kueri untuk menentukan apakah file telah dipulihkan atau belum. Jika hasil menunjukkan file sampel yang diasumsikan telah diarsipkan telah dipulihkan, Azure Databricks menganggap semua file untuk kueri telah dipulihkan dan proses kueri dilanjutkan. Hasilnya mencakup data dari file yang ditandai untuk pengarsipan.

Pengambilan sampel mungkin tidak berlaku untuk semua kueri, lihat Batasan.

Batasan

Dukungan arsip memiliki keterbatasan berikut:

  • Dukungan arsip hanya berlaku untuk file data. Jika ada file dalam log transaksi Delta (_delta_log/ direktori) yang dipindahkan ke tingkat penyimpanan yang diarsipkan, tabel menjadi sama sekali tidak dapat diakses dan semua kueri terhadap tabel gagal. Anda harus mengonfigurasi kebijakan siklus hidup cloud Anda sehingga _delta_log/ jalur tidak disertakan dalam arsip. Lihat contoh konfigurasi Siklus Hidup S3.
  • Tidak ada dukungan untuk kebijakan manajemen siklus hidup yang tidak didasarkan pada waktu pembuatan file. Ini termasuk kebijakan berbasis waktu akses dan kebijakan berbasis tag.
  • Anda tidak dapat menggunakan DROP COLUMN pada tabel dengan file yang diarsipkan.
  • REORG TABLE APPLY PURGE melakukan upaya terbaik, tetapi hanya berfungsi pada penghapusan file vektor dan file data yang dirujuk yang tidak diarsipkan. PURGE tidak dapat menghapus file vektor penghapusan yang diarsipkan.
  • Memperluas aturan transisi manajemen siklus hidup menghasilkan perilaku yang tidak terduga. Lihat Memperluas aturan transisi manajemen siklus hidup.
  • LIMIT kueri pada tabel dengan dukungan pengarsipan diaktifkan tidak memicu pengambilan sampel untuk data yang dipulihkan. Jika data tabel dipulihkan, sebagian besar kueri berhasil saat mengkueri data yang LIMIT dipulihkan, tetapi kueri mengembalikan DELTA_ARCHIVED_FILES_IN_LIMIT kesalahan. Lihat Bagaimana Azure Databricks menyampling data yang sudah dipulihkan?.

Mengubah aturan transisi manajemen siklus hidup

Jika Anda mengubah interval waktu untuk aturan transisi manajemen siklus hidup cloud, Anda harus memperbarui properti delta.timeUntilArchived ke interval yang sama.

Jika interval waktu sebelum arsip dipersingkat (waktu yang lebih singkat sejak pembuatan file), dukungan arsip untuk tabel Delta Lake tetap berfungsi normal setelah properti tabel diperbarui.

Memperluas aturan transisi manajemen siklus hidup

Jika interval waktu sebelum pengarsipan diperpanjang (untuk menambahkan lebih banyak waktu sebelum pengarsipan dipicu), memperbarui properti delta.timeUntilArchived ke nilai baru dapat menyebabkan kesalahan. Penyedia cloud tidak secara otomatis memulihkan file dari penyimpanan yang diarsipkan saat kebijakan retensi data diubah. Ini berarti bahwa file yang sebelumnya memenuhi syarat untuk pengarsipan tetapi sekarang tidak dianggap memenuhi syarat untuk pengarsipan masih diarsipkan.

Penting

Untuk menghindari kesalahan, jangan pernah mengatur properti delta.timeUntilArchived ke nilai yang lebih besar dari usia aktual data yang terakhir diarsipkan.

Pertimbangkan skenario di mana interval waktu untuk arsip diubah dari 60 hari menjadi 90 hari:

  1. Semua rekaman antara 60 dan 90 hari diarsipkan saat kebijakan berubah.
  2. Selama 30 hari, tidak ada file baru yang diarsipkan (file terlama yang tidak diarsipkan berusia 60 hari ketika kebijakan diperpanjang).
  3. Setelah 30 hari, kebijakan siklus hidup menjelaskan semua data yang diarsipkan dengan benar.

Pengaturan delta.timeUntilArchived melacak interval waktu yang ditetapkan terhadap waktu pembuatan berkas yang direkam oleh catatan transaksi Delta. Ini tidak memiliki pengetahuan eksplisit tentang kebijakan yang mendasarinya. Selama periode jeda antara ambang arsip lama dan ambang arsip baru, Anda dapat mengambil salah satu pendekatan berikut untuk menghindari kueri file arsip:

  1. Anda dapat membiarkan pengaturan delta.timeUntilArchived tetap dengan ambang batas lama sampai waktu yang cukup berlalu untuk semua file diarsipkan.
    • Mengikuti contoh di atas, setiap hari selama 30 hari pertama, data senilai hari lain akan dianggap diarsipkan oleh Azure Databricks tetapi masih perlu diarsipkan oleh penyedia cloud. Ini tidak mengakibatkan kesalahan tetapi mengabaikan beberapa file data yang dapat dikueri.
    • Setelah 30 hari, perbarui delta.timeUntilArchived ke 90 days.
  2. Anda dapat memperbarui pengaturan delta.timeUntilArchived setiap hari untuk mencerminkan interval saat ini selama periode jeda.
    • Meskipun kebijakan cloud diatur ke 90 hari, usia sebenarnya dari data yang diarsipkan berubah secara real-time. Misalnya, setelah 7 hari, pengaturan delta.timeUntilArchived ke 67 days secara akurat mencerminkan usia semua file data yang diarsipkan.
    • Pendekatan ini hanya diperlukan jika Anda harus mengakses semua data dalam lapisan data cepat (hot tiers).

Catatan

Memperbarui nilai untuk delta.timeUntilArchived tidak mengubah data mana yang diarsipkan. Ini hanya mengubah data mana yang diperlakukan Azure Databricks seolah-olah diarsipkan.