Compartir a través de


REPAIR TABLE

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

Este comando repara o modifica las particiones de las tablas.

Use la cláusula SYNC METADATA con Delta Lake para actualizar el servicio de catálogo en función de los metadatos de la tabla, o para generar metadatos de Apache Iceberg para las tablas habilitadas para lecturas de Iceberg. No use SYNC METADATA cuando modifique particiones para tablas que no son de Delta Lake.

La funcionalidad admitida depende de si las tablas están registradas en el catálogo de Unity o el metastore de Hive y si delta Lake respalda las tablas.

Syntax

[ 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.

Parameters

  • 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 almacenados en caché de la tabla y todos los 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 subcarpetas 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

    Delta Lake solamente.

    Si la configuración spark.databricks.delta.catalog.update.enabled se establece en true, las actualizaciones de metadatos de la tabla de destino se sincronizan automáticamente con el servicio de catálogo. De lo contrario, es posible que se requiera una sincronización manual mediante REPAIR TABLE table_name SYNC METADATA .

    Lee el registro de transacciones de la tabla de destino y actualiza la información de metadatos en el servicio de catálogo. Para ejecutar este comando, debe tener los privilegios MODIFY y SELECT en la tabla de destino y los privilegios USE SCHEMA y USE CATALOG en el esquema y el catálogo primarios.

    Este argumento funciona con el metastore de Hive en Databricks Runtime 16.1 y versiones posteriores. Para las tablas de metastore de Hive, debe tener privilegios USAGE y MODIFY.

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

    Puede usar REPAIR TABLE table_name SYNC METADATA para aplicar el modelo de permisos del catálogo de Unity a clones poco profundos que está leyendo desde un catálogo externo que se creó mediante la federación de metastore de Hive. Consulte Trabajar con clones poco profundos.

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