REPAIR TABLE
Platí pro: Databricks SQL Databricks Runtime
Tento příkaz opraví nebo upraví oddíly pro tabulky, které nejsou typu 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 se tabulka nenašla, Azure Databricks vyvolá chybu TABLE_OR_VIEW_NOT_FOUND.
ADD
neboDROP
SYNC
PARTITIONS
Platí pro: Databricks SQL Databricks Runtime 10.4 LTS a vyšší
Při vytváření tabulky, která není delta pomocí klauzule
PARTITIONED BY
, se oddíly vygenerují a zaregistrují v metastore 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 OBNOVIT ODDÍLY.
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 přidat přidá nové oddíly do katalogu relace pro všechny podsložky uvnitř složky základní tabulky, které nepatří do žádných oddílů tabulky. Funkce ADD je výchozí argument, pokud není zadána žádná jiná možnost.
- Příkaz DROP odstraní všechny oddíly z katalogu relací, které mají neexistující umístění v systému souborů.
- SYNC je kombinace 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. Pokud chcete tento příkaz spustit, musíte mít oprávnění MODIFY a SELECT v cílové tabulce a USE SCHEMA a USE CATALOG oprávnění 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 Č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