Delen via


REPAIR TABLE

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Met deze opdracht worden metagegevens van Delta-tabellen bijgewerkt naar de Unity Catalog-service. Voor niet-Delta-tabellen worden de partities van de tabel hersteld en wordt de Hive-metastore bijgewerkt.

  • Delta-tabellen: bij uitvoering met Delta-tabellen met behulp van het SYNC METADATA argument leest deze opdracht het deltalogboek van de doeltabel en werkt u de metagegevensgegevens bij naar de Unity Catalog-service.
  • Niet-Delta-tabellen: wanneer deze worden uitgevoerd met niet-Delta-tabellen, worden met deze opdracht alle partities in de map van een niet-Delta-tabel hersteld en wordt de Hive-metastore bijgewerkt.

Syntaxis

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

Voor vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger MSCK is dit optioneel.

Parameters

  • table_name

    De naam van de tabel. Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND fout.

  • ADDof DROPSYNCPARTITIONS

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan 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 uit MSCK REPAIR TABLE om de partities te registreren.

    Een andere manier om partities te herstellen is door ALTER TABLE RECOVER PARTITIONS te gebruiken.

    Als de tabel in de cache is opgeslagen, wist de opdracht de gegevens in de cache van de tabel en alle afhankelijke gegevens die ernaar verwijzen. De cache vult de volgende keer dat de tabel of afhankelijke items worden geopend.

    • Met de opdracht ADD worden nieuwe partities toegevoegd 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 met niet-bestaande locaties in het bestandssysteem.
    • SYNC is de combinatie van DROP en ADD.
  • ** SYNC METADATA**

    Leest het deltalogboek van de doeltabel en werkt de metagegevensgegevens bij in de Unity Catalog-service. Als u deze opdracht wilt uitvoeren, moet u de bevoegdheden WIJZIGEN en SELECTEREN hebben voor de doeltabel en HET GEBRUIK van het bovenliggende schema en de catalogus. Deze opdracht met dit argument mislukt als de doeltabel niet is opgeslagen in Unity Catalog.

    Als Delta UniForm is ingeschakeld, SYNC METADATA activeert u handmatige conversie van huidige Delta-metagegevens naar Iceberg-metagegevens en synchroniseert u de nieuwste Iceberg-versie voor het Unity Catalog Iceberg-eindpunt. Zie UniForm gebruiken om Delta-tabellen te 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