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.
En este artículo se describe la estrategia de detección de particiones predeterminada para las tablas externas de Unity Catalog y una configuración opcional para habilitar un registro de metadatos de partición que hace que la detección de particiones sea coherente con el metastore de Hive.
Databricks recomienda habilitar el registro de metadatos de partición para mejorar las velocidades de lectura y el rendimiento de la consulta para tablas externas de Unity Catalog con particiones.
¿Cuál es la estrategia de detección de particiones predeterminada para Unity Catalog?
De forma predeterminada, Unity Catalog enumera de forma recursiva todos los directorios de la ubicación de la tabla para detectar automáticamente las particiones. En el caso de tablas grandes con muchos directorios de partición, esto puede aumentar la latencia de muchas operaciones de tabla.
Uso del registro de metadatos de partición
En Databricks Runtime 13.3 LTS y versiones posteriores, puede habilitar opcionalmente el registro de metadatos de partición, una estrategia de detección de particiones para tablas externas registradas en el catálogo de Unity. Este comportamiento es coherente con la estrategia de detección de particiones usada en metastore de Hive. Este comportamiento solo afecta a las tablas externas de Unity Catalog que tienen particiones y usan Parquet, ORC, CSV, Avro o JSON. Databricks recomienda habilitar el nuevo comportamiento para mejorar las velocidades de lectura y el rendimiento de las consultas para estas tablas.
Importante
Las tablas con el registro de metadatos de partición habilitado muestran un cambio de comportamiento para la detección de particiones. En lugar de examinar automáticamente la ubicación de la tabla para las particiones, Unity Catalog solo respeta las particiones registradas en los metadatos de partición. Consulte Agregar, quitar o reparar metadatos de partición manualmente.
Este comportamiento se convertirá en el valor predeterminado en una versión futura de Databricks Runtime. Las tablas con esta característica habilitada solo se pueden leer o escribir mediante Databricks Runtime 13.3 LTS y versiones posteriores.
Habilitar registro de metadatos de partición
Para habilitar el registro de metadatos de partición en una tabla, establezca la propiedad table al crear una tabla externa, como se muestra en el ejemplo siguiente:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
TBLPROPERTIES ('partitionMetadataEnabled' = 'true')
LOCATION 'abfss://<bucket-path>/<table-directory>';
Después de crear una tabla con el registro de metadatos de partición habilitado, Azure Databricks usa los metadatos de partición para leer la tabla en todas las cargas de trabajo posteriores.
También puede usar Spark conf para habilitar los metadatos de partición para su SparkSession actual. Cuando se habilita, las tablas externas creadas en SparkSession se crearán con la propiedad de tabla de metadatos de partición habilitada. El conf de Spark está deshabilitado de forma predeterminada.
La sintaxis siguiente muestra el uso de SQL para establecer una configuración de Spark en un cuaderno. También puede establecer configuraciones de Spark al configurar el proceso.
SET spark.databricks.nonDelta.partitionLog.enabled = true;
Puede invalidar la conf de Spark habilitando o deshabilitando explícitamente la propiedad table cuando se crea una tabla.
Importante
Solo puede leer y escribir tablas con el registro de metadatos de partición habilitado en Databricks Runtime 13.3 LTS y versiones posteriores. Para leer estas tablas mediante Databricks Runtime 12.2 LTS, debe quitar y volver a crear la tabla con la propiedad de tabla de metadatos de partición deshabilitada.
Las tablas externas no eliminan los archivos de datos subyacentes al quitarlos. Databricks recomienda usar la sintaxis CREATE OR REPLACE para actualizar tablas para usar el registro de metadatos de partición, como en el ejemplo siguiente:
CREATE OR REPLACE TABLE <catalog>.<schema>.<table-name>
USING <format>
PARTITIONED BY (<partition-column-list>)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Puede comprobar si una tabla se creó mediante metadatos de partición mediante:
- Compruebe la sección propiedades de la tabla devuelta por
DESCRIBE EXTENDED table_name. - Compruebe los metadatos de la tabla con el Explorador de catálogos.
Las propiedades de la tabla contienen partitionMetadataEnabled=true.
Unity Catalog aplica reglas en superposiciones de ruta de acceso para tablas y volúmenes. No se puede registrar una nueva tabla de Unity Catalog en una colección de archivos de datos si ya existe una tabla en esa ubicación.
Trabajar con tablas con metadatos de partición
Databricks recomienda usar nombres de tabla en todas las lecturas y escrituras en todas las tablas registradas en Unity Catalog. Para tablas con metadatos de partición, esto garantiza que las nuevas particiones agregadas a una tabla se registren en Unity Catalog y que las consultas contra la tabla lean todas las particiones registradas.
El uso de patrones basados en rutas de acceso para lecturas o escrituras puede dar lugar a que las particiones se omitan o no se registren en el metastore de Unity Catalog. Consulte Limitaciones.
Enumerar particiones
Use el siguiente comando para mostrar todas las particiones registradas en Unity Catalog como metadatos de partición:
SHOW PARTITIONS <table-name>
Para comprobar si una sola partición está registrada en Unity Catalog, use el siguiente comando:
SHOW PARTITIONS <table-name>
PARTITION (<partition-column-name> = <partition-column-value>)
Agregar, quitar o reparar metadatos de partición manualmente
Unity Catalog requiere que todas las particiones de las tablas externas estén contenidas en el directorio registrado mediante la cláusula LOCATION durante el registro de la tabla.
Con los metadatos de partición habilitados, la detección automática de particiones en la ubicación de la tabla está deshabilitada. Si los sistemas externos escriben datos en la ubicación de la tabla o usa escrituras basadas en rutas de acceso para agregar o sobrescribir registros en la tabla, debe reparar manualmente los metadatos de la partición.
Azure Databricks usa particiones de estilo Hive para almacenar tablas respaldadas por Parquet, ORC, CSV y JSON. Las particiones de estilo Hive contienen pares clave-valor conectados por un inicio de sesión igual en el directorio de partición, por ejemplo year=2021/month=01/.
Si la tabla usa particiones de estilo Hive, puede usar MSCK REPAIR para sincronizar los metadatos de partición en Unity Catalog con particiones que existen en la ubicación de la tabla. En los ejemplos de sintaxis siguientes se muestran las operaciones comunes:
-- Add and remove parition metadata to match directories in table location
MSCK REPAIR TABLE <table_name> SYNC PARTITIONS;
-- Add partitions in the table location that are not registered as partition metadata
MSCK REPAIR TABLE <table_name> ADD PARTITIONS;
-- Drop partitions registered as partition metadata that are not in the table location
MSCK REPAIR TABLE <table_name> DROP PARTITIONS;
Vea REPAIR TABLE.
Especificar manualmente rutas de acceso para otros tipos de partición
Si la tabla no usa la creación de particiones de estilo Hive, debe especificar manualmente las ubicaciones de partición al agregar particiones. La especificación manual de particiones también puede reducir la latencia en comparación con la sintaxis MSCK REPAIR, especialmente para las tablas con un gran número de particiones. En el ejemplo de sintaxis siguiente se muestra cómo agregar una partición:
ALTER TABLE <table-name>
ADD PARTITION (<partition-column-name> = <partition-column-value>)
LOCATION 'abfss://<bucket-path>/<table-directory>/<partition-directory>';
También puede usar la sintaxis ALTER TABLE para quitar, cambiar el nombre, recuperar y establecer ubicaciones para las particiones. Consulte ALTER TABLE ... PARTITION.
Limitaciones
Existen las siguientes limitaciones:
- No se puede leer ni escribir en tablas con metadatos de partición habilitados mediante Databricks Runtime 12.2 LTS o versiones inferiores.
- Leer una tabla mediante la ruta de acceso del directorio devuelve todas las particiones, incluidas las que se han agregado o quitado manualmente.
- Si inserta o sobrescribe registros en una tabla mediante una ruta de acceso en lugar de un nombre de tabla, los metadatos de partición no se registran.