Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
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
Databricks SQL
Databricks Runtime 12.2 LTS y versiones posteriores, MSCK es opcional.
Parameters
-
Nombre de la tabla. Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.
ADDoDROPoSYNCPARTITIONSSe aplica a:
Databricks SQL
Databricks Runtime 10.4 LTS y versiones posterioresAl 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. EjecuteMSCK REPAIR TABLEpara 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 METADATADelta Lake solamente.
Si la configuración
spark.databricks.delta.catalog.update.enabledse establece entrue, 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 medianteREPAIR 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 METADATAinicia 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 METADATApara 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