REPAIR TABLE
Van toepassing op: Databricks SQL Databricks Runtime
Met deze opdracht worden partities voor niet-Delta Lake-tabellen hersteld of gewijzigd. Gebruik de SYNC METADATA
-component met Delta Lake om de catalogusservice bij te werken op basis van tabelmetagegevens of om icebergmetagegevens te genereren voor tabellen die zijn ingeschakeld voor iceberg-leesbewerkingen.
Ondersteunde functionaliteit verschilt tussen Unity Catalog en Hive-metastore en of tabellen worden ondersteund door Delta Lake.
Syntaxis
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Voor Databricks SQL Databricks Runtime 12.2 LTS en hoger MSCK
is dit optioneel.
Parameters
-
De naam van de tabel. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND-fout.
ADD
ofDROP
SYNC
PARTITIONS
Van toepassing op: Databricks SQL Databricks Runtime 10.4 LTS en hoger
Wanneer u een niet-Delta-tabel maakt met behulp van de
PARTITIONED BY
-component, worden partities gegenereerd en geregistreerd in de Hive-metastore. Als u echter de gepartitioneerde tabel maakt op basis van bestaande gegevens, worden partities niet automatisch geregistreerd in de Hive-metastore. Voer uitMSCK REPAIR TABLE
om de partities te registreren.Een andere manier om partities te herstellen is door ALTER TABLE PARTITIES herstellente gebruiken.
Als de tabel in de cache is opgeslagen, wist de opdracht de gecachete gegevens van de tabel en alle afhankelijke elementen die ernaar verwijzen. De cache wordt gevuld de volgende keer dat de tabel of afhankelijke elementen worden geopend.
- opdracht ADD voegt nieuwe partities toe aan de sessiecatalogus voor alle submappen in de basistabelmap die geen deel uitmaken van tabelpartities. ADD is het standaardargument als er geen andere optie is opgegeven.
- DROP opdracht verwijdert alle partities uit de sessiecatalogus die locaties hebben die niet bestaan in het bestandssysteem.
- SYNC is de combinatie van DROP en ADD.
SYNC METADATA
Alleen Delta Lake.
Leest het transactielogboek van de doeltabel en werkt de metagegevensgegevens in de catalogusservice bij. Als u deze opdracht wilt uitvoeren, moet u de bevoegdheden WIJZIGEN en SELECT op de doeltabel hebben, evenals de bevoegdheden USE SCHEMA en USE CATALOG op het bovenliggende schema en de catalogus.
Dit argument werkt met hive-metastore in Databricks Runtime 16.1 en hoger. Voor Hive-metastore-tabellen moet u de bevoegdheden USAGE en MODIFY hebben.
Als Delta UniForm is ingeschakeld (vereist Unity Catalog), activeert
SYNC METADATA
handmatige conversie van huidige Delta-metagegevens naar Iceberg-metagegevens en synchroniseert de nieuwste Iceberg-versie voor het Unity Catalog Iceberg-eindpunt. Zie Delta-tabellen lezen met Iceberg-clients.
Voorbeelden (niet-Delta Lake-tabellen)
-- 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
Voorbeeld (Unity Catalog-tabel)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA