Delen via


REPAIR TABLE

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan 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 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 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