すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:期限切れデータのクリーンアップ

最終更新日:Jan 08, 2025

期限切れデータをクリーンアップして、ストレージ容量を解放し、リソース使用量を最適化し、システムの運用効率を向上させることができます。このトピックでは、セーブポイントファイルの有効期限の変更、パーティションの有効期限の設定、および破棄されたファイルの削除によって、Apache Paimonテーブルの期限切れデータをクリーンアップする方法について説明します。

使用上の注意

Ververica Runtime(VVR) 8.0.5以降を使用するApache Flink向けRealtime Computeのみが、Apache Paimonテーブルをサポートしています。

セーブポイントファイルの有効期限の変更

重要

セーブポイントを使用して履歴データを復元できます。データ復元の精度を確保するために、セーブポイントファイルに関連付けられている履歴データファイルは、セーブポイントの有効期限が切れるまで削除できません。

セーブポイントファイルが生成され続けると、履歴データファイルによって占有されるストレージ容量が徐々に増加します。そのため、使用されなくなったセーブポイントファイルをクリーンアップして、関連付けられている履歴データファイルによって占有されているストレージ容量を解放する必要があります。

次の表に、セーブポイントファイルの有効期限を決定するために使用されるパラメーターを示します。ALTER TABLEステートメントを実行して、パラメーターを変更できます。また、SQLヒントを使用して、データ書き込み用に実行されるドラフトのパラメーターを変更することもできます。パラメーターの変更方法の詳細については、「Apache Paimonカタログの管理」トピックの「Apache Paimonテーブルのスキーマの変更」セクションをご参照ください。

パラメーター

説明

データ型

デフォルト値

snapshot.num-retained.min

保存できるセーブポイントファイルの最小数。

整数

10

snapshot.num-retained.max

保存できるセーブポイントファイルの最大数。

整数

2147483647

snapshot.time-retained

セーブポイントファイルの最大保存期間。

期間

1h

現在のセーブポイントファイルの数が savepoint.num-retained.min パラメーターの値よりも大きく、最も古いセーブポイントファイルが savepoint.time-retained パラメーターの値よりも長い期間保持されている場合、セーブポイントのクリーンアップがトリガーされます。現在のセーブポイントファイルの数が savepoint.num-retained.max パラメーターの値よりも大きい場合も、セーブポイントのクリーンアップがトリガーされます。

パーティションの有効期限の設定

ビジネスで直近の期間のデータが必要な場合は、時間を基準にデータをパーティション分割し、パーティションの有効期限を設定できます。これにより、システムは履歴パーティションを自動的に削除して、ストレージ容量を解放できます。

重要

パーティション内のデータファイルは、関連するパーティションの有効期限イベントを含むセーブポイントファイルの有効期限が切れた場合にのみ完全に削除されます。

パーティションの有効期限は、次の表に示す 3 つのパラメーターによって決まります。ALTER TABLEステートメントを実行して、パラメーターを変更できます。また、SQLヒントを使用して、データ書き込み用に実行されるドラフトのパラメーターを変更することもできます。パラメーターの変更方法の詳細については、「Apache Paimonカタログの管理」トピックの「Apache Paimonテーブルのスキーマの変更」セクションをご参照ください。

パラメーター

説明

備考

partition.expiration-time

パーティションの有効期間。

このパラメーターの値は期間です。例:12h および 7d

partition.timestamp-pattern

パーティション値を時間文字列に変換するために使用されるパターン。

このパラメーターの値の各パーティションキー列は、ドル記号($)と列名で表されます。

partition.timestamp-formatter

時間文字列をタイムスタンプに変換するために使用されるパターン。

  • このパラメーターが指定されていない場合、デフォルトで yyyy-MM-dd HH:mm:ss または yyyy-MM-dd パターンが使用されます。

  • JavaのDateTimeFormatterと互換性のあるすべてのパターンを使用できます。

パーティションが存在する期間が partition.expiration-time パラメーターの値を超えると、パーティションは削除されます。パーティションが存在する期間は、現在のシステム時刻と変換されたパーティション値のタイムスタンプの差に基づいて取得されます。パーティション値は、次のロジックに基づいてタイムスタンプに変換されます。

  1. partition.timestamp-pattern パラメーターは、パーティション値時間文字列に変換するためのパターンを指定します。

  2. partition.timestamp-formatter パラメーターは、時間文字列タイムスタンプに変換するためのパターンを指定します。

例:

  • パーティションに dt という名前のパーティションキー列が 1 つ含まれている場合、'partition.timestamp-pattern' = '$dt' を指定して、dt=20240308 パーティションの値を 20240308 時間文字列に変換できます。また、ion.timestamp-formatter' = 'yyyyMMdd' を指定して、時間文字列をタイムスタンプに変換することもできます。

  • パーティションに yearmonthday という名前のパーティションキー列が 3 つ含まれている場合、'partition.timestamp-pattern' = '$year-$month-$day' を指定して、year=2023,month=04,day=21 パーティションの値を 2023-04-21 時間文字列に変換できます。この場合、時間文字列はデフォルトのパターン yyyy-MM-dd であるため、partition.timestamp-formatter パラメーターを指定する必要はありません。

  • パーティションに yearmonthdayhour という名前のパーティションキー列が 4 つ含まれている場合、'partition.timestamp-pattern' = '$year-$month-$day $hour:00:00' を指定して、year=2023,month=04,day=21,hour=17 パーティションの値を 2023-04-21 17:00:00 時間文字列に変換できます。この場合、時間文字列はデフォルトのパターン yyyy-MM-dd HH:mm:ss であるため、partition.timestamp-formatter パラメーターを指定する必要はありません。

破棄されたファイルの削除

デプロイエラーレポートや再起動などの理由により、コミットされていない一時ファイルがApache Paimonテーブルのディレクトリにまだ保存されている場合があります。破棄されたファイルは、セーブポイントの有効期限が切れても削除できません。破棄されたファイルを削除するには、次の手順を実行する必要があります。

  1. Apache Flink向けRealtime Computeコンソールにログインし、スクリプトを作成します。スクリプトの作成方法の詳細については、「スクリプトの作成」をご参照ください。

  2. スクリプトエディターで、次のSQLステートメントを入力します。

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

    <catalog-name> は、Apache Paimonカタログの名前を示します。<database-name> は、Apache Paimonテーブルが存在するデータベースの名前を示します。<table-name> は、Apache Paimonテーブルの名前を示します。

    デフォルトでは、1 日以上保持されている破棄されたファイルのみを削除できます。また、時間パラメーターを指定して、削除できる破棄されたファイルの最新の创建时间を指定することもできます。次のサンプルコードは、mycat.mydb.mytblテーブルから 2023 年 10 月 31 日 12:00:00 以前に作成された破棄されたファイルを削除する方法を示しています。

    CALL `mycat`.sys.remove_orphan_files('mydb.mytbl', '2023-10-31 12:00:00');
  3. 入力した SQL コードを選択し、スクリプトエディターの左上隅にある [実行] をクリックします。

    破棄されたファイルが削除されると、スクリプトエディターの下部にある [結果] タブに、削除されたファイルの総数が表示されます。

参照

  • Apache Paimonプライマリキーテーブルの一般的な最適化方法の詳細については、「パフォーマンスの最適化」をご参照ください。

  • Apache Paimonテーブルの消費は、セーブポイントファイルに依存します。セーブポイントの最大保存期間が非常に短いか、デプロイの消費効率が低い場合、消費されているApache Paimonテーブルのセーブポイントファイルが有効期限切れのために削除される可能性があります。この場合、「File xxx not found, Possible causes」というエラーメッセージが表示されます。この問題のトラブルシューティング方法の詳細については、「アップストリームおよびダウンストリームストレージに関するFAQ」トピックの「デプロイがApache Paimonテーブルから読み取られるときに「File xxx not found, Possible causes」というエラーメッセージが表示される場合はどうすればよいですか?」セクションをご参照ください。