期限切れデータをクリーンアップして、ストレージ容量を解放し、リソース使用量を最適化し、システムの運用効率を向上させることができます。このトピックでは、セーブポイントファイルの有効期限の変更、パーティションの有効期限の設定、および破棄されたファイルの削除によって、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 パラメーターの値を超えると、パーティションは削除されます。パーティションが存在する期間は、現在のシステム時刻と変換されたパーティション値のタイムスタンプの差に基づいて取得されます。パーティション値は、次のロジックに基づいてタイムスタンプに変換されます。
partition.timestamp-patternパラメーターは、パーティション値を時間文字列に変換するためのパターンを指定します。partition.timestamp-formatterパラメーターは、時間文字列をタイムスタンプに変換するためのパターンを指定します。
例:
パーティションに
dtという名前のパーティションキー列が 1 つ含まれている場合、'partition.timestamp-pattern' = '$dt'を指定して、dt=20240308パーティションの値を20240308時間文字列に変換できます。また、ion.timestamp-formatter' = 'yyyyMMdd'を指定して、時間文字列をタイムスタンプに変換することもできます。パーティションに
year、month、dayという名前のパーティションキー列が 3 つ含まれている場合、'partition.timestamp-pattern' = '$year-$month-$day'を指定して、year=2023,month=04,day=21パーティションの値を2023-04-21時間文字列に変換できます。この場合、時間文字列はデフォルトのパターンyyyy-MM-ddであるため、partition.timestamp-formatterパラメーターを指定する必要はありません。パーティションに
year、month、day、hourという名前のパーティションキー列が 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テーブルのディレクトリにまだ保存されている場合があります。破棄されたファイルは、セーブポイントの有効期限が切れても削除できません。破棄されたファイルを削除するには、次の手順を実行する必要があります。
Apache Flink向けRealtime Computeコンソールにログインし、スクリプトを作成します。スクリプトの作成方法の詳細については、「スクリプトの作成」をご参照ください。
スクリプトエディターで、次の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');入力した SQL コードを選択し、スクリプトエディターの左上隅にある [実行] をクリックします。
破棄されたファイルが削除されると、スクリプトエディターの下部にある [結果] タブに、削除されたファイルの総数が表示されます。
参照
Apache Paimonプライマリキーテーブルの一般的な最適化方法の詳細については、「パフォーマンスの最適化」をご参照ください。
Apache Paimonテーブルの消費は、セーブポイントファイルに依存します。セーブポイントの最大保存期間が非常に短いか、デプロイの消費効率が低い場合、消費されているApache Paimonテーブルのセーブポイントファイルが有効期限切れのために削除される可能性があります。この場合、「
File xxx not found, Possible causes」というエラーメッセージが表示されます。この問題のトラブルシューティング方法の詳細については、「アップストリームおよびダウンストリームストレージに関するFAQ」トピックの「デプロイがApache Paimonテーブルから読み取られるときに「File xxx not found, Possible causes」というエラーメッセージが表示される場合はどうすればよいですか?」セクションをご参照ください。