Partager via


FSCK REPAIR TABLE

S’applique à :case marquée oui Databricks SQL case marquée oui Databricks Runtime

Détecte et répare les métadonnées et les problèmes de fichier de données pour une table Delta. La commande a trois niveaux progressifs :

  • Réparer uniquement le journal des transactions
  • Réparer le journal des transactions et supprimer les fichiers de données manquants
  • Réparer le journal des transactions, supprimer les fichiers de données manquants et supprimer les fichiers de données endommagés

Chaque niveau inclut toutes les opérations des niveaux précédents.

Syntaxe

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 }

Paramètres

  • table_name

    Identifie une table Delta existante. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options.

  • fsck_mode

    S’applique à :check marqué oui Databricks Runtime 18.0 et versions ultérieures

    Définit les actions à entreprendre.

    • S’il n’est pas spécifié (mode par défaut) :

      • Valide et répare le journal des transactions requis pour construire la dernière capture instantanée de la table.
      • Supprime les références de la table aux fichiers de données qui n’existent plus dans le système de fichiers sous-jacent.
      • Supprime les références de la table aux fichiers de données dont les valeurs de partition violent les NOT NULL contraintes.
    • METADATA ONLY

      Valide et répare le journal des transactions requis pour construire la dernière capture instantanée de la table.

    • VERIFY ALL FILES

      Effectue toutes les opérations à partir du mode par défaut. Valide l’intégrité de tous les fichiers de données actifs. Supprime les références de la table aux fichiers qui échouent à la vérification de l’intégrité.

    • VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp

      Effectue toutes les opérations à partir du mode par défaut. Valide l’intégrité des fichiers de données actifs dont le temps de modification se situe dans la fenêtre de temps spécifiée. Supprime les références de la table aux fichiers qui échouent à la vérification de l’intégrité. Les deux start_timestamp et end_timestamp doivent être des expressions constantes qui évaluent les horodatages. Les expressions peuvent inclure les fonctions current_timestamp() et current_date().

  • TEST À BLANC

    Remonte, sans apporter de modifications, les problèmes de métadonnées et de fichiers de données que FSCK REPAIR TABLE réparerait.

    Par défaut, DRY RUN renvoie uniquement les 1 000 premiers fichiers. Vous pouvez augmenter ce seuil en définissant la variable spark.databricks.delta.fsck.maxNumEntriesInResult de session sur une valeur plus élevée avant d’exécuter la commande dans un notebook.

Remarques

  • FSCK répare uniquement le dernier snapshot de table. Les points de contrôle historiques et les fichiers inactifs ne sont pas validés ou réparés.

  • Lors de la vérification de l’existence du fichier en mode par défaut ou de la validation de l’intégrité des fichiers dans VERIFY les modes, FSCK valide également tous les vecteurs de suppression associés. Si le fichier de données Parquet ou son vecteur de suppression associé est manquant ou endommagé, les références sont supprimées de la table.

Retours

Lors de l’exécution avec DRY RUN, la commande retourne un DataFrame avec le schéma suivant :

  • dataFilePath STRING NOT NULL
  • dataFileMissing BOOLEAN NOT NULL
  • deletionVectorPath STRING
  • deletionVectorFileMissing BOOLEAN NOT NULL

S’applique à :check marqué oui Databricks Runtime 18.0 et versions ultérieures

  • checkpointFilePath STRING
  • fileCrcCorrupt BOOLEAN NOT NULL
  • fileUnreadable BOOLEAN NOT NULL
  • fileMetadataHasInvalidPartitionValues BOOLEAN NOT NULL
  • deletionVectorCorrupt BOOLEAN NOT NULL

Exemples

— 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