REPAIR TABLE
Platí pro: Databricks SQL 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 Databricks SQL Databricks Runtime 12.2 LTS a vyšší MSCK
je volitelné.
Parametry
-
Název tabulky. Pokud tabulku nenajdete, Azure Databricks vyvolá TABLE_OR_VIEW_NOT_FOUND chybu.
ADD
neboDROP
SYNC
PARTITIONS
Platí pro: Databricks SQL 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 zaregistrujteMSCK 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