Partager via


REPAIR TABLE

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

Cette commande met à jour les métadonnées de table Delta vers le service catalogue Unity. Pour les tables non delta, elle répare les partitions de la table et met à jour le metastore Hive.

  • Tables delta : lors d’une exécution avec des tables Delta à l’aide de l’argument SYNC METADATA, cette commande lit le journal delta de la table cible et met à jour les informations de métadonnées sur le service Unity Catalog.
  • Tables non delta : lors d’une exécution avec des tables non delta, cette commande récupère toutes les partitions dans le répertoire d’une table non Delta et met à jour le metastore Hive.

Syntaxe

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

Pour coche marquée oui Databricks SQL oui coché Databricks Runtime 12.2 LTS et versions ultérieures, MSCK est facultatif.

Paramètres

  • table_name

    Nom de la table. Si la table est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.

  • ADD ou DROP ou SYNCPARTITIONS

    S’applique à : coche marquée oui Databricks SQL oui coché Databricks Runtime 10.4 LTS et ultérieur

    Lors de la création d’une table en utilisant la clause PARTITIONED BY, les partitions sont générées et inscrites dans le metastore Hive. Toutefois, si la table partitionnée est créée à partir de données existantes, les partitions ne sont pas inscrites automatiquement dans le metastore Hive. Exécutez MSCK REPAIR TABLE pour inscrire les partitions.

    Une autre façon de récupérer des partitions consiste à utiliser ALTER TABLE RECOVER PARTITIONS.

    Si la table est mise en cache, la commande efface les données mises en cache de la table et tous ses dépendants qui y font référence. La mise en cache se remplit lors du prochain accès à la table ou ses dépendants.

    • La commande ADD ajoute de nouvelles partitions au catalogue de sessions pour tous les sous-dossiers du dossier de la table de base qui n’appartiennent à aucune partition de table. ADD est l’argument par défaut si aucune autre option n’est spécifiée.
    • La commande DROP supprime toutes les partitions du catalogue de sessions qui ont des emplacements non existants dans le système de fichiers.
    • SYNC est la combinaison de DROP et ADD.
  • ** SYNC METADATA**

    Lit le journal delta de la table cible et met à jour les informations de métadonnées dans le service catalogue Unity. Pour exécuter cette commande, vous devez disposer des privilèges MODIFY et SELECT sur la table cible et l’UTILISATION du schéma parent et du catalogue. Cette commande avec cet argument échoue si la table cible n’est pas stockée dans le catalogue Unity.

    Si Delta UniForm est activé, SYNC METADATA déclenche la conversion manuelle des métadonnées Delta actuelles en métadonnées Iceberg et synchronise la dernière version d’Iceberg pour le point de terminaison Unity Catalog Iceberg. Consultez Utiliser UniForm pour lire les tables Delta avec les clients Iceberg.

Exemples (tables non 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

Exemple (table catalogue Unity)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA