REPAIR TABLE

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Tento příkaz aktualizuje metadata tabulky Delta do služby Katalogu Unity. U tabulek jiných než Delta opraví oddíly tabulky a aktualizuje metastore Hive.

  • Tabulky Delta: Při spuštění tabulek Delta pomocí argumentu SYNC METADATA tento příkaz přečte rozdílový protokol cílové tabulky a aktualizuje informace o metadatech do služby Katalogu Unity.
  • Tabulky jiné než Delta: Při spuštění s tabulkami, které nejsou delta, tento příkaz obnoví všechny oddíly v adresáři tabulky, která není Delta, a aktualizuje metastore Hive.

Syntaxe

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

Pro zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 12.2 LTS a vyšší MSCK je volitelné.

Parametry

  • Table_name

    Název tabulky. Pokud tabulku nenajdete, Azure Databricks vyvolá TABLE_OR_VIEW_NOT_FOUND chybu.

  • ADDnebo DROPSYNCPARTITIONS

    Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 10.4 LTS a vyšší

    Při vytváření tabulky, která není delta pomocí PARTITIONED BY klauzule, se oddíly vygenerují a zaregistrují v metastoru Hive. Pokud však vytvoříte dělenou tabulku z existujících dat, oddíly se automaticky nezaregistrují v metastoru Hive. Spuštěním zaregistrujte MSCK REPAIR TABLE oddíly.

    Dalším způsobem obnovení oddílů je použití ALTER TABLE RECOVER PARTITIONS.

    Pokud je tabulka uložená v mezipaměti, příkaz vymaže data uložená v mezipaměti tabulky a všechny závislé položky, které na ni odkazují. Mezipaměť vyplní při příštím přístupu k tabulce nebo závislým objektům.

    • Příkaz ADD přidá do katalogu relací nové oddíly pro všechny podsložky v základní složce tabulky, které nepatří do oddílů tabulky. Funkce ADD je výchozí argument, pokud není zadána žádná jiná možnost.
    • Příkaz DROP zahodí všechny oddíly z katalogu relací, které mají neexistující umístění v systému souborů.
    • SYNC je kombinace funkce DROP a ADD.
  • ** SYNC METADATA**

    Přečte rozdílový protokol cílové tabulky a aktualizuje informace o metadatech ve službě Katalogu Unity. Chcete-li spustit tento příkaz, musíte mít oprávnění MODIFY a SELECT pro cílovou tabulku a POUŽITÍ nadřazeného schématu a katalogu. Tento příkaz s tímto argumentem selže, pokud cílová tabulka není uložena v katalogu Unity.

    Pokud je povolený Delta UniForm, SYNC METADATA aktivuje ruční převod aktuálních metadat Delta na metadata Icebergu a synchronizuje nejnovější verzi Icebergu pro koncový bod Iceberg katalogu Unity. Viz Použití uniformu ke čtení tabulek Delta s klienty Iceberg.

Příklady (tabulky jiné než Delta Lake)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

Příklad (tabulka katalogu Unity)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA