適用対象:
Databricks SQL
Databricks Runtime
Delta テーブルのメタデータとデータ ファイルの問題を検出して修復します。 このコマンドには、次の 3 つのプログレッシブ レベルがあります。
- トランザクション ログのみを修復する
- トランザクション ログを修復し、不足しているデータ ファイルを削除する
- トランザクション ログの修復、不足しているデータ ファイルの削除、破損したデータ ファイルの削除
各レベルには、前のレベルのすべての操作が含まれます。
構文
FSCK REPAIR TABLE table_name [fsck_mode] [DRY RUN]
fsck_mode
{ METADATA ONLY |
VERIFY ALL FILES |
VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp }
パラメーター
-
既存の Delta テーブルを識別します。 名前には、 時仕様またはオプション指定を含めてはなりません。
fsck_mode適用対象:
Databricks Runtime 18.0 以降実行するアクションを定義します。
指定しない場合 (既定のモード):
- 最新のテーブル スナップショットを作成するために必要なトランザクション ログを検証して修復します。
- 基になるファイル システムに存在しなくなったデータ ファイルへの参照をテーブルから削除します。
- パーティション値が
NOT NULL制約に違反しているデータ ファイルへの参照をテーブルから削除します。
METADATA ONLY最新のテーブル スナップショットを作成するために必要なトランザクション ログを検証して修復します。
VERIFY ALL FILES既定のモードからすべての操作を実行します。 すべてのアクティブなデータ ファイルの整合性を検証します。 整合性チェックに失敗したファイルへの参照をテーブルから削除します。
VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp既定のモードからすべての操作を実行します。 変更時刻が指定された時間枠内にあるアクティブなデータ ファイルの整合性を検証します。 整合性チェックに失敗したファイルへの参照をテーブルから削除します。
start_timestampとend_timestampの両方が、タイムスタンプに評価される定数式である必要があります。 式には、current_timestamp()関数とcurrent_date()関数を含めることができます。
ドライ ラン
レポートでは、
FSCK REPAIR TABLEが修復するメタデータとデータファイルの問題を、変更を加えずに報告します。既定では、
DRY RUNの場合、最初の 1000 個のファイルのみを返されます。 このしきい値を増やすには、ノートブックでコマンドを実行する前にセッション変数spark.databricks.delta.fsck.maxNumEntriesInResultを高い値に設定します。
注記
FSCK は、最新のテーブル スナップショットのみを修復します。 履歴チェックポイントと非アクティブなファイルは検証も修復もされません。
既定のモードでファイルが存在するかどうかを確認したり、
VERIFYモードでファイルの整合性を検証したりする場合、FSCKは関連する削除ベクトルも検証します。 Parquet データ ファイルまたはその関連する削除ベクトルが見つからないか破損している場合、参照はテーブルから削除されます。
返品
DRY RUNで実行すると、次のスキーマを持つ DataFrame が返されます。
dataFilePath STRING NOT NULLdataFileMissing BOOLEAN NOT NULLdeletionVectorPath STRINGdeletionVectorFileMissing BOOLEAN NOT NULL
適用対象:
Databricks Runtime 18.0 以降
checkpointFilePath STRINGfileCrcCorrupt BOOLEAN NOT NULLfileUnreadable BOOLEAN NOT NULLfileMetadataHasInvalidPartitionValues BOOLEAN NOT NULLdeletionVectorCorrupt BOOLEAN NOT NULL
例
— Assume 005.checkpoint.parquet has CRC checksum corruption.
> FSCK REPAIR TABLE t METADATA ONLY DRY RUN;
dataFilePath dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
------------ --------------- ------------------ ------------------------- --------------------------------- -------------- -------------- ------------------------------------- ---------------------
null false null false _delta_log/005.checkpoint.parquet true false false false
— Assume file1.parquet is missing, whose deletion vector dv1.bin is also missing.
— Assume file2.parquet has partition value being NULL, where the partition column is NOT NULL.
> FSCK REPAIR TABLE t DRY RUN;
dataFilePath dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
------------- --------------- ------------------ ------------------------- ------------------ -------------- -------------- ------------------------------------- ---------------------
file2.parquet true dv1.bin true null false false false false
file2.parquet false null false null null null true false
— Assume file1.parquet is corrupt and unreadable.
— Assume file2.parquet has a corrupt deletion vector dv2.bin.
> FSCK REPAIR TABLE t VERIFY ALL FILES DRY RUN;
dataFilePath dataFileMissing deletionVectorPath deletionVectorFileMissing checkpointFilePath fileCrcCorrupt fileUnreadable fileMetadataHasInvalidPartitionValues deletionVectorCorrupt
------------- --------------- ------------------ ------------------------- ------------------ -------------- -------------- ------------------------------------- ---------------------
file1.parquet false null false null false true false false
file2.parquet false dv2.bin false null null null false true