Freigeben über


FSCK REPAIR TABLE

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Erkennt und repariert Metadaten- und Datendateiprobleme für eine Delta-Tabelle. Der Befehl verfügt über drei progressive Ebenen:

  • Reparieren nur des Transaktionsprotokolls
  • Reparieren des Transaktionsprotokolls und Entfernen fehlender Datendateien
  • Reparieren des Transaktionsprotokolls, Entfernen fehlender Datendateien und Entfernen beschädigter Datendateien

Jede Ebene enthält alle Vorgänge aus den vorherigen Ebenen.

Syntax

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 }

Parameter

  • table_name

    Identifiziert eine vorhandene Delta-Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten.

  • fsck_mode

    Gilt für:Ja, mit Häkchen markiert Databricks Runtime 18.0 und höher

    Definiert, welche Aktionen ausgeführt werden sollen.

    • Wenn nicht angegeben (Standardmodus):

      • Überprüft und repariert das Transaktionsprotokoll, das erforderlich ist, um den neuesten Tabellenschnappschuss zu erstellen.
      • Entfernt Verweise aus der Tabelle auf Datendateien, die nicht mehr im zugrunde liegenden Dateisystem vorhanden sind.
      • Entfernt Verweise aus der Tabelle auf Datendateien, deren Partitionswerte gegen Einschränkungen verstoßen NOT NULL .
    • METADATA ONLY

      Überprüft und repariert das Transaktionsprotokoll, das erforderlich ist, um die neueste Tabellenmomentaufnahme zu erstellen.

    • VERIFY ALL FILES

      Führt alle Vorgänge aus dem Standardmodus aus. Überprüft die Integrität aller aktiven Datendateien. Entfernt Verweise aus der Tabelle auf dateien, bei denen die Integritätsprüfung fehlschlägt.

    • VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp

      Führt alle Vorgänge aus dem Standardmodus aus. Überprüft die Integrität aktiver Datendateien, deren Änderungszeit innerhalb des angegebenen Zeitfensters liegt. Entfernt Verweise aus der Tabelle auf dateien, bei denen die Integritätsprüfung fehlschlägt. Beide start_timestamp und end_timestamp müssen Konstantenausdrücke sein, die als Zeitstempel ausgewertet werden. Die Ausdrücke können current_timestamp() und current_date() Funktionen enthalten.

  • PROBELAUF

    Meldet die Metadaten- und Datendateiprobleme, die FSCK REPAIR TABLE reparieren würde, ohne Änderungen vorzunehmen.

    Standardmäßig gibt DRY RUN nur die ersten 1000 Dateien zurück. Sie können diesen Schwellenwert erhöhen, indem Sie die Sitzungsvariable spark.databricks.delta.fsck.maxNumEntriesInResult auf einen höheren Wert festlegen, bevor Sie den Befehl in einem Notizbuch ausführen.

Hinweise

  • FSCK repariert nur den neuesten Tabellenschnappschuss. Historische Prüfpunkte und inaktive Dateien werden nicht überprüft oder repariert.

  • Bei der Überprüfung auf das Vorhandensein von Dateien im Standardmodus oder beim Überprüfen der Dateiintegrität in VERIFY Modi FSCK werden auch alle zugeordneten Löschvektoren überprüft. Wenn entweder die Datendatei "Parkett" oder der zugehörige Löschvektor fehlt oder beschädigt ist, werden die Verweise aus der Tabelle entfernt.

Gibt zurück

Bei ausführung mit DRY RUN, gibt der Befehl einen DataFrame mit dem folgenden Schema zurück:

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

Gilt für:Ja, mit Häkchen markiert Databricks Runtime 18.0 und höher

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

Beispiele

— 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