Sdílet prostřednictvím


REPAIR TABLE

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

Tento příkaz opraví nebo upraví oddíly pro tabulky, které nejsou tabulkami Delta Lake. Pomocí klauzule SYNC METADATA s Delta Lake aktualizujte službu katalogu na základě metadat tabulek nebo vygenerujte metadata Icebergu pro tabulky povolené pro čtení Icebergu.

Podporované funkce se liší mezi katalogem Unity a metastorem Hive a tím, jestli jsou tabulky zálohované službou Delta Lake.

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

    Pouze Delta Lake.

    Přečte transakční protokol cílové tabulky a aktualizuje informace o metadatech ve službě katalogu. Chcete-li spustit tento příkaz, musíte mít oprávnění MODIFY a SELECT v cílové tabulce a použít oprávnění SCHEMA a USE CATALOG nadřazeného schématu a katalogu.

    Tento argument funguje s metastorem Hive v Databricks Runtime 16.1 a novějším. U tabulek metastoru Hive musíte mít oprávnění USAGE a MODIFY.

    Pokud je povolený Delta UniForm (vyžaduje katalog Unity), 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