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.
El particionado al estilo Hive divide una tabla Delta en subdirectorios físicos según los valores de una o más columnas de partición. Cada combinación única de valores de columna de partición crea un directorio independiente. Este diseño habilita la eliminación de particiones: el motor omite directorios completos cuando una consulta filtra en la columna de partición.
Tip
Para la mayoría de las cargas de trabajo, a partir de la versión 2.0 de Fabric Runtime, la agrupación liquid es la estrategia recomendada de organización de datos para el rendimiento de lectura. La razón principal para usar la creación de particiones es habilitar operaciones de escritura simultáneas que no entran en conflicto.
Para obtener instrucciones completas sobre la agrupación en clústeres líquidos, consulte Agrupación en clústeres líquidos.
Cuándo usar la creación de particiones
El caso de uso principal para la creación de particiones en Delta Lake permite operaciones de escritura simultáneas que no entran en conflicto. Delta Lake usa el control de simultaneidad optimista y dos operaciones que tocan los mismos archivos pueden entrar en conflicto. La creación de particiones permite que las operaciones simultáneas se dirijan a conjuntos de archivos separados trabajando en particiones independientes.
Use la creación de particiones cuando:
- Dispone de procesos de escritura concurrentes que necesitan actualizar, eliminar o fusionarse en la misma tabla sin conflictos; por ejemplo, varias canalizaciones que procesan diferentes unidades de negocio o regiones simultáneamente.
- La columna de partición tiene cardinalidad baja a moderada (decenas a cientos de valores distintos, no miles). Nota: Las tablas más grandes pueden acomodar más particiones. Tenga como destino al menos 1 GB de datos en cada partición.
- Los valores de partición se alinean con los patrones de escritura; cada escritor tiene como destino naturalmente una partición específica.
Importante
En el caso de la omisión de archivos y el rendimiento de lectura por sí solo, la agrupación en clústeres líquidos es más eficaz que la creación de particiones. El clustering líquido elimina el riesgo de problemas derivados de archivos pequeños en columnas de partición de alta cardinalidad y permite modificar la estrategia de clustering a lo largo del ciclo de vida de la tabla. Elija la creación de particiones principalmente cuando necesite aislar los escritores simultáneos.
Creación de una tabla con particiones
CREATE TABLE sales.orders (
order_id BIGINT,
order_date DATE,
region STRING,
amount DECIMAL(10,2)
)
USING DELTA
PARTITIONED BY (region)
Creación de particiones y escrituras simultáneas
La creación de particiones es el mecanismo principal de Delta Lake para evitar conflictos entre operaciones de escritura simultáneas. Cuando se crean particiones de una tabla, las operaciones que tienen como destino particiones diferentes funcionan en conjuntos separados de archivos y no entran en conflicto entre sí.
Por ejemplo, dos operaciones simultáneas MERGE INTO en una tabla con region particiones no entran en conflicto siempre que cada una tenga como destino una región diferente, siempre que la columna de partición se incluya explícitamente en la condición de combinación:
-- Pipeline A: processes North America only
MERGE INTO sales.orders AS target
USING staged_orders AS source
ON target.order_id = source.order_id
AND target.region = 'NA'
AND source.region = 'NA'
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *
Sin la creación de particiones, o sin incluir la columna de partición en la condición de operación, estas mismas operaciones podrían entrar en conflicto incluso si modifican lógicamente filas diferentes. La columna de partición debe aparecer en la propia condición de combinación, no solo en los datos de origen. Sin él, Delta Lake no puede determinar en tiempo de validación que las dos operaciones tocaron conjuntos de archivos separados.
Para obtener una guía completa sobre los tipos de conflictos y las estrategias de resolución, consulte Control de concurrencia.
Dificultades habituales
- Las columnas de partición de cardinalidad alta (por ejemplo,
user_idcon millones de valores) crean miles de directorios y archivos pequeños, lo que degrada tanto el rendimiento de escritura como de lectura.- Las columnas de fecha deben elegirse con precaución. Para muchas tablas, la creación de particiones por una columna de fecha da como resultado demasiadas particiones pequeñas. Tenga como destino al menos 1 GB de datos en cada partición.
- Las columnas de partición no se pueden cambiar después de la creación de la tabla sin volver a escribir toda la tabla.
- El problema de los archivos pequeños es común con el streaming o las adiciones frecuentes en muchas particiones, ya que cada operación de escritura crea al menos un archivo por partición.
- La creación de particiones y la agrupación en clústeres líquidos son incompatibles en la misma tabla. Debe elegir una estrategia.
Comparación de la creación de particiones y la agrupación en clústeres líquidos
| Aspecto | Creación de particiones de estilo hive | Agrupación en clústeres líquidos |
|---|---|---|
| Mejor para | Aislamiento simultáneo del escritor | Optimización de lectura y omisión de archivos de uso general |
| Granularidad | Un directorio por valor distinto (o combinación) | Intervalos de valores de nivel de archivo, sin directorios |
| Cardinalidad alta | Crea miles de archivos o directorios pequeños | Se maneja de forma natural; agrupa los datos en archivos del tamaño adecuado |
| Cambios de columna | Requiere reescritura de tabla completa |
ALTER TABLE CLUSTER BY se aplica la próxima vez OPTIMIZE |
| Ruta de escritura | La columna de partición debe conocerse en tiempo de escritura. | Cualquier columna puede agruparse posteriormente |
| Escrituras simultáneas | Las particiones no separadas evitan conflictos | Solo adición sin conflictos; las actualizaciones/eliminaciones/combinaciones pueden entrar en conflicto en tablas sin particiones |
| Problema de archivos pequeños | Habitual en streaming o inserciones frecuentes | Gestionado por OPTIMIZE compactación |