全部产品
Search
文档中心

Realtime Compute for Apache Flink:Bersihkan data yang kedaluwarsa

更新时间:Jul 02, 2025

Anda dapat membersihkan data yang kedaluwarsa untuk melepaskan ruang penyimpanan, mengoptimalkan penggunaan sumber daya, dan meningkatkan efisiensi operasi sistem. Topik ini menjelaskan cara membersihkan data yang kedaluwarsa di tabel Apache Paimon dengan memodifikasi waktu kedaluwarsa file savepoint, mengonfigurasi waktu kedaluwarsa partisi, serta menghapus file yang dibuang.

Catatan Penggunaan

Hanya Realtime Compute for Apache Flink yang menggunakan Ververica Runtime (VVR) 8.0.5 atau versi lebih baru yang mendukung tabel Apache Paimon.

Modifikasi waktu kedaluwarsa file savepoint

Penting

Savepoint digunakan untuk memulihkan data historis. Untuk memastikan pemulihan data yang akurat, file data historis terkait dengan file savepoint tidak dapat dihapus sebelum savepoint tersebut kedaluwarsa.

Karena file savepoint terus dihasilkan, ruang penyimpanan yang ditempati oleh file data historis bertambah secara bertahap. Oleh karena itu, file savepoint yang tidak lagi digunakan harus dibersihkan untuk melepaskan ruang penyimpanan yang ditempati oleh file data historis terkait.

Tabel berikut menjelaskan parameter yang digunakan untuk menentukan waktu kedaluwarsa file savepoint. Anda dapat mengeksekusi pernyataan ALTER TABLE untuk memodifikasi parameter. Anda juga dapat menggunakan petunjuk SQL untuk memodifikasi parameter dalam draft yang dijalankan untuk penulisan data. Untuk informasi lebih lanjut tentang cara memodifikasi parameter, lihat bagian "Modifikasi Skema Tabel Apache Paimon" dari topik Kelola Katalog Apache Paimon.

Parameter

Deskripsi

Tipe Data

Nilai Default

snapshot.num-retained.min

Jumlah minimum file savepoint yang dapat disimpan.

Integer

10

snapshot.num-retained.max

Jumlah maksimum file savepoint yang dapat disimpan.

Integer

2147483647

snapshot.time-retained

Periode retensi maksimum file savepoint.

Durasi

1h

Jika jumlah file savepoint saat ini melebihi nilai parameter savepoint.num-retained.min dan file savepoint paling awal telah disimpan selama periode yang lebih lama dari nilai parameter savepoint.time-retained, pembersihan savepoint akan dipicu. Jika jumlah file savepoint saat ini melebihi nilai parameter savepoint.num-retained.max, pembersihan savepoint juga akan dipicu.

Konfigurasikan waktu kedaluwarsa partisi

Jika bisnis Anda memerlukan data dalam periode waktu terbaru, Anda dapat mempartisi data berdasarkan waktu dan mengonfigurasi waktu kedaluwarsa partisi. Dengan cara ini, sistem dapat secara otomatis menghapus partisi historis untuk melepaskan ruang penyimpanan.

Penting

File data dalam partisi hanya akan sepenuhnya dihapus ketika file savepoint yang berisi peristiwa kedaluwarsa partisi terkait sudah kedaluwarsa.

Kedaluwarsa partisi ditentukan oleh tiga parameter yang dijelaskan dalam tabel berikut. Anda dapat mengeksekusi pernyataan ALTER TABLE untuk memodifikasi parameter. Anda juga dapat menggunakan petunjuk SQL untuk memodifikasi parameter dalam draft yang dijalankan untuk penulisan data. Untuk informasi lebih lanjut tentang cara memodifikasi parameter, lihat bagian "Modifikasi Skema Tabel Apache Paimon" dari topik Kelola Katalog Apache Paimon.

Parameter

Deskripsi

Catatan

partition.expiration-time

Periode validitas partisi.

Nilai parameter ini adalah periode waktu. Contoh: 12h dan 7d.

partition.timestamp-pattern

Pola yang digunakan untuk mengonversi nilai partisi menjadi string waktu.

Setiap kolom kunci partisi dalam nilai parameter ini diwakili oleh tanda dolar ($) dan nama kolom.

partition.timestamp-formatter

Pola yang digunakan untuk mengonversi string waktu menjadi timestamp.

  • Jika parameter ini tidak ditentukan, pola yyyy-MM-dd HH:mm:ss atau yyyy-MM-dd digunakan secara default.

  • Semua pola yang kompatibel dengan DateTimeFormatter Java dapat digunakan.

Jika periode waktu keberadaan partisi melebihi nilai parameter partition.expiration-time, partisi tersebut akan dihapus. Periode waktu keberadaan partisi diperoleh berdasarkan perbedaan antara waktu sistem saat ini dan timestamp dari nilai partisi yang dikonversi. Nilai partisi dikonversi menjadi timestamp berdasarkan logika berikut:

  1. Parameter partition.timestamp-pattern menentukan pola untuk mengonversi nilai partisi menjadi string waktu.

  2. Parameter partition.timestamp-formatter menentukan pola untuk mengonversi string waktu menjadi timestamp.

Contoh:

  • Jika partisi berisi satu kolom kunci partisi bernama dt, Anda dapat menentukan 'partition.timestamp-pattern' = '$dt' untuk mengonversi nilai partisi dt=20240308 menjadi string waktu 20240308. Anda juga dapat menentukan ion.timestamp-formatter' = 'yyyyMMdd' untuk mengonversi string waktu menjadi timestamp.

  • Jika partisi berisi tiga kolom kunci partisi bernama year, month, dan day, Anda dapat menentukan 'partition.timestamp-pattern' = '$year-$month-$day' untuk mengonversi nilai partisi year=2023,month=04,day=21 menjadi string waktu 2023-04-21. Dalam hal ini, Anda tidak perlu menentukan parameter partition.timestamp-formatter karena string waktu berada dalam pola default yyyy-MM-dd.

  • Jika partisi berisi empat kolom kunci partisi bernama year, month, day, dan hour, Anda dapat menentukan 'partition.timestamp-pattern' = '$year-$month-$day $hour:00:00' untuk mengonversi nilai partisi year=2023,month=04,day=21,hour=17 menjadi string waktu 2023-04-21 17:00:00. Dalam hal ini, Anda tidak perlu menentukan parameter partition.timestamp-formatter karena string waktu berada dalam pola default yyyy-MM-dd HH:mm:ss.

Hapus file yang dibuang

Beberapa file sementara yang belum dikomit mungkin masih tersimpan di direktori tabel Apache Paimon karena alasan seperti pelaporan kesalahan penyebaran dan restart. File yang dibuang tidak dapat dihapus setelah savepoint kedaluwarsa. Anda harus melakukan langkah-langkah berikut untuk menghapus file yang dibuang:

  1. Masuk ke konsol Realtime Compute for Apache Flink dan buat skrip. Untuk informasi lebih lanjut tentang cara membuat skrip, lihat Buat Skrip.

  2. Di editor skrip, masukkan pernyataan SQL berikut:

    CALL `<catalog-name>`.sys.remove_orphan_files('<database-name>.<table-name>');

    <catalog-name> menunjukkan nama katalog Apache Paimon. <database-name> menunjukkan nama database tempat tabel Apache Paimon berada. <table-name> menunjukkan nama tabel Apache Paimon.

    Secara default, hanya file yang dibuang yang disimpan selama lebih dari satu hari yang dapat dihapus. Anda juga dapat menentukan parameter waktu untuk menentukan waktu pembuatan terbaru dari file yang dibuang yang dapat dihapus. Contoh kode berikut menunjukkan cara menghapus file yang dibuang yang dibuat tidak lebih dari pukul 12:00:00 pada 31 Oktober 2023 dari tabel mycat.mydb.mytbl:

    CALL `mycat`.sys.remove_orphan_files('mydb.mytbl', '2023-10-31 12:00:00');
  3. Pilih kode SQL yang Anda masukkan, dan klik Jalankan di pojok kiri atas editor skrip.

    Setelah file yang dibuang dihapus, tab Results di bagian bawah editor skrip menampilkan jumlah total file yang dihapus.

Referensi

  • Untuk informasi lebih lanjut tentang metode optimasi umum tabel kunci utama Apache Paimon, lihat Optimasi Performa.

  • Konsumsi tabel Apache Paimon bergantung pada file savepoint. Jika periode retensi maksimum savepoint terlalu pendek atau efisiensi konsumsi penyebaran rendah, file savepoint tabel Apache Paimon yang sedang dikonsumsi mungkin dihapus karena kedaluwarsa. Dalam hal ini, pesan kesalahan "File xxx not found, Possible causes" muncul. Untuk informasi lebih lanjut tentang cara memecahkan masalah ini, lihat bagian "Apa yang harus saya lakukan jika pesan kesalahan "File xxx not found, Possible causes" muncul ketika penyebaran membaca dari tabel Apache Paimon?" dari topik FAQ tentang Penyimpanan Hulu dan Hilir.