Compartir a través de


REPAIR TABLE

Se aplica a: casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Este comando actualiza los metadatos de la tabla Delta al servicio Unity Catalog. Con las tablas que no son Delta, repara las particiones de la tabla y actualiza el metastore de Hive.

  • Tablas Delta: si se ejecuta con tablas Delta mediante el argumento SYNC METADATA, este comando lee el registro Delta de la tabla de destino y actualiza la información de metadatos al servicio Unity Catalog.
  • Tablas que no son Delta: cuando se ejecuta con tablas que no son Delta, este comando recupera todas las particiones del directorio de estas tablas y actualiza el metastore de Hive.

Sintaxis

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

Para casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores, MSCK es opcional.

Parámetros

  • table_name

    Nombre de la tabla. Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

  • ADD o DROP o SYNCPARTITIONS

    Se aplica a: casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 10.4 LTS y versiones posteriores

    Al crear una tabla que no es Delta mediante la cláusula PARTITIONED BY, las particiones se generan y se registran en el metastore de Hive. Sin embargo, si crea la tabla con particiones a partir de datos existentes, las particiones no se registran automáticamente en el metastore de Hive. Ejecute MSCK REPAIR TABLE para registrar las particiones.

    Otra manera de recuperar particiones es usar ALTER TABLE RECOVER PARTITIONS.

    Si la tabla se almacena en caché, el comando borra los datos en caché de la tabla y todos los elementos dependientes que hacen referencia a ella. La memoria caché se rellenará cuando se acceda a la tabla o a los elementos dependientes la próxima vez.

    • El comando ADD agrega nuevas particiones al catálogo de sesiones para todas las carpetas secundarias de la carpeta de tabla base que no pertenecen a ninguna partición de tabla. ADD es el argumento predeterminado si no se especifica ninguna otra opción.
    • El comando DROP anula todas las particiones del catálogo de sesiones que tienen ubicaciones no existentes en el sistema de archivos.
    • SYNC es la combinación de DROP y ADD.
  • ** SYNC METADATA**

    Lee el registro Delta de la tabla de destino y actualiza la información de metadatos en el servicio Unity Catalog. Para ejecutar este comando, debe tener privilegios MODIFY y SELECT en la tabla de destino y USAGE en el esquema y catálogo primarios. Este comando con este argumento producirá un error si la tabla de destino no está almacenada en Unity Catalog.

    Si el UniForm de Delta está habilitado, SYNC METADATA desencadena la conversión manual de los metadatos de Delta actuales a los metadatos de Iceberg y sincroniza la versión más reciente de Iceberg para el punto de conexión de Iceberg de Unity Catalog. Consulte Uso de UniForm para leer tablas Delta con clientes de Iceberg.

Ejemplos (tablas que no son de 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

Ejemplo (tabla de Unity Catalog)

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