FSCK REPAIR TABLE

Platí pro:zaškrtnuto ano Databricks SQL zaškrtnuto ano Databricks Runtime

Detekuje a opravuje problémy s metadaty a datovými soubory pro tabulku Delta. Příkaz má tři progresivní úrovně:

  • Oprava pouze transakčního protokolu
  • Oprava transakčního protokolu a odebrání chybějících datových souborů
  • Oprava transakčního protokolu, odebrání chybějících datových souborů a odebrání poškozených datových souborů

Každá úroveň zahrnuje všechny operace z předchozích úrovní.

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 }

Parametry

  • table_name

    Identifikuje existující tabulku Delta. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.

  • fsck_mode

    Platí pro:check označený ano Databricks Runtime 18.0 a vyšší

    Definuje, které akce se mají provést.

    • Pokud není zadaný (výchozí režim):

      • Ověří a opraví transakční protokol potřebný k vytvoření nejnovějšího snímku tabulky.
      • Odebere z tabulky odkazy na datové soubory, které již v základním systému souborů neexistují.
      • Odebere z tabulky odkazy na datové soubory, jejichž hodnoty oddílů porušují NOT NULL omezení.
    • METADATA ONLY

      Ověří a opraví transakční protokol potřebný k vytvoření nejnovějšího snímku tabulky.

    • VERIFY ALL FILES

      Provede všechny operace z výchozího režimu. Ověří integritu všech aktivních datových souborů. Odebere z tabulky odkazy na všechny soubory, které selžou kontrole integrity.

    • VERIFY FILES MODIFIED BETWEEN start_timestamp AND end_timestamp

      Provede všechny operace z výchozího režimu. Ověřuje integritu aktivních datových souborů, jejichž čas úpravy spadá do zadaného časového intervalu. Odebere z tabulky odkazy na všechny soubory, které selžou kontrole integrity. Oba výrazy start_timestamp a end_timestamp musí být konstantními výrazy, které se vyhodnotí jako časová razítka. Výrazy mohou zahrnovat current_timestamp() a current_date() funkce.

  • ZKOUŠKA NA SUCHO

    Sestavy bez provedení změn upozorňují na problémy s metadaty a datovými soubory, které by FSCK REPAIR TABLE opravil.

    Ve výchozím nastavení DRY RUN vrátí pouze prvních 1 000 souborů. Tuto prahovou hodnotu můžete zvýšit nastavením proměnné spark.databricks.delta.fsck.maxNumEntriesInResult relace na vyšší hodnotu před spuštěním příkazu v poznámkovém bloku.

Poznámky

  • FSCK opraví jenom nejnovější snímek tabulky. Historické kontrolní body a neaktivní soubory se neověřují ani opravují.

  • Při kontrole existence souboru ve výchozím režimu nebo ověřování integrity souborů v VERIFY režimech FSCK ověřuje také všechny přidružené vektory odstranění. Pokud datový soubor Parquet nebo přidružený vektor odstranění chybí nebo je poškozen, odkazy se z tabulky odeberou.

Návraty

Když se spustí s DRY RUN, příkaz vrátí datový rámec s následujícím schématem:

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

Platí pro:check označený ano Databricks Runtime 18.0 a vyšší

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

Příklady

-- 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