Bersihkan file yang telah diproses dengan Auto Loader

Catatan

cloudFiles.cleanSource tersedia di Databricks Runtime 16.4 dan ke atas.

Gunakan cloudFiles.cleanSource untuk memindahkan atau menghapus file dari direktori sumber setelah diproses. Menghapus file yang telah diproses mengurangi biaya penyimpanan dan memperpendek durasi operasi listing di masa depan.

Mode Description
OFF (standar) File di direktori sumber tidak dipindahkan atau dihapus.
MOVE File di direktori sumber dipindahkan ke jalur yang ditentukan setelah cloudFiles.cleanSource.moveDestination durasi retensi (default 30 hari) yang ditentukan oleh cloudFiles.cleanSource.retentionDuration elapses.
DELETE File di direktori sumber dihapus setelah durasi retensi (default 30 hari) yang ditentukan oleh cloudFiles.cleanSource.retentionDuration e-laps.
Opsi tambahan Default Nilai yang valid Description
cloudFiles.cleanSource.retentionDuration 30 days String CalendarInterval seperti 14 days, , 2 weeksatau 1 month Jumlah waktu tunggu sebelum file yang diproses menjadi kandidat untuk dibersihkan dengan sumber bersih. Harus lebih besar dari 7 hari untuk DELETE. Tidak ada batasan minimum untuk MOVE.
cloudFiles.cleanSource.waitForCompletion false true, false Opsi ini tersedia di Databricks Runtime 19 dan ke atas.
Sumber bersih secara default adalah operasi dengan usaha terbaik. Jika aliran selesai memproses file sebelum sumber bersih selesai memindahkan atau menghapus file, operasi sumber bersih dihentikan. Pengaturan cloudFiles.cleanSource.waitForCompletion memaksa aliran tetap hidup sampai sumber bersih selesai memindahkan atau menghapus file. Ini dapat memperpanjang waktu run stream jika ada banyak file yang harus dihapus.
Ini hanya berlaku ketika stream selesai dengan sendirinya (misalnya, trigger yang availableNow menguras semua file). Menghentikan atau membatalkan stream secara manual akan langsung mengakhiri operasi sumber bersih, bahkan ketika opsi ini diatur.
cloudFiles.cleanSource.moveDestination None Penyimpanan cloud atau jalur volume Katalog Unity Jalur untuk mengarsipkan file yang telah diproses ke lokasi cloudFiles.cleanSource ketika cloudFiles.cleanSource diatur ke . Ini bisa menjadi jalur penyimpanan cloud atau jalur volume Katalog Unity (misalnya, /Volumes/my_catalog/my_schema/my_volume/archive/).
Lokasi pemindahan harus:
  • Bukan anak dari direktori sumber. Jika Anda menempatkan tujuan pemindahan di dalam direktori sumber, file yang diarsipkan akan diserap lagi.
  • Berada di lokasi eksternal, volume, atau pemasangan DBFS yang sama dengan sumbernya. Gerakan lintas wadah dan lintas kontainer tidak didukung dan mengakibatkan kesalahan.

Auto Loader harus memiliki izin tulis ke direktori ini.

Pertimbangan sebelum mengaktifkan cloudFiles.cleanSource

  • Azure Databricks tidak menyarankan menggunakan opsi ini ketika beberapa aliran mengonsumsi data dari direktori sumber yang sama. Aliran tercepat membersihkan file, jadi aliran yang lebih lambat tidak pernah mengambilnya.
  • Mengaktifkan fitur ini mengharuskan Auto Loader untuk mempertahankan status tambahan dalam titik pemeriksaannya, yang menimbulkan overhead performa tetapi memungkinkan pengamatan yang ditingkatkan melalui cloud_files_state fungsi bernilai tabel. Lihat fungsi bernilai tabel cloud_files_state.
  • Sumber bersih menggunakan pengaturan saat ini untuk memutuskan apakah akan atau MOVEDELETE file tertentu. Misalnya, misalkan bahwa pengaturan adalah MOVE ketika file awalnya diproses tetapi diubah menjadi DELETE ketika file menjadi kandidat untuk pembersihan 30 hari kemudian. Dalam kasus ini, sumber bersih akan menghapus file tersebut.
  • File tidak dijamin akan dibersihkan segera setelah kedaluwarsa cloudFiles.cleanSource.retentionDuration . Untuk menjaga biaya tetap rendah, Auto Loader membersihkan file bersamaan dengan pemrosesan aliran dan mengakhiri begitu pemrosesan aliran selesai atau dihentikan. File yang sebelumnya kandidat untuk dibersihkan, tetapi tidak dapat dibersihkan selama pemrosesan aliran akan diambil saat Auto Loader dijalankan berikutnya.

Catatan tentang sumber bersih

  • Sumber bersih hanya berjalan jika ada batch file yang harus diproses. Ini bukan proses latar belakang yang berjalan secara independen dari konsumsi. Jika tidak ada file baru yang harus dimasukkan ke direktori sumber, sumber bersih tidak akan dimulai untuk stream saat ini. Akibatnya, jika sebuah aliran berhenti menerima file baru, file yang sudah melewati durasi retensi tidak akan dibersihkan sampai aliran berikutnya memproses batch baru.

    Persyaratan batch ini berlaku terlepas dari cloudFiles.cleanSource.waitForCompletion. Opsi itu hanya menjaga stream tetap hidup cukup lama untuk menyelesaikan pembersihan yang sedang berlangsung dalam satu run. Sumber bersih tidak dimulai ketika tidak ada batch yang harus diproses.

  • Jika sebuah file dimasukkan pada run stream Nth, file commit_time untuk file tersebut diatur pada run stream N+1. commit_time harus diatur sebelum sumber bersih dapat menentukan apakah file memenuhi syarat untuk dipindahkan atau dihapus, sehingga file paling awal dapat menjadi kandidat untuk pembersihan adalah run stream N+2.

  • Pengaturan commit_time memang perlu tapi tidak cukup. Sebuah file hanya dibersihkan setelah durasi retensinya berakhir, diukur dari commit_time. Misalnya, dengan default cloudFiles.cleanSource.retentionDuration 30 hari, file yang diproses hari ini tidak memenuhi syarat untuk dibersihkan sampai 30 hari setelah commit_time file tersebut ditetapkan. Ini berlaku terlepas dari berapa banyak aliran yang terjadi di antaranya. Kedua kondisi harus dipenuhi sebelum file dipindahkan atau dihapus.