Optimizar las tablas Delta Lake con orden V

El formato de tabla Lakehouse y Delta Lake son fundamentales para Microsoft Fabric. Mantener optimizadas las tablas Delta es clave para el rendimiento y la eficacia de los costos de las cargas de trabajo de análisis.

Este artículo te ayuda a decidir cuándo usar el orden V y muestra los patrones principales de configuración y mantenimiento para las tablas Delta.

Use este artículo para:

  • Entiende qué cambia el orden V y cuándo ayuda.
  • Entiende cómo se complementan el orden Z y el orden V.
  • Elija el nivel de control adecuado: sesión, propiedad de tabla o operación de escritura.
  • Aplique patrones de mantenimiento de tablas delta en el contexto adecuado del entorno de ejecución de Spark.

Para orientación cruzada de carga de trabajo sobre cuándo aplicar el orden V según escenarios de consumo, véase Mantenimiento y optimización de la tabla de carga cruzada.

¿Qué es el orden V?

El orden V es una optimización en tiempo de escritura para archivos Parquet que puede mejorar el rendimiento de consultas posteriores entre motores Fabric.

De un vistazo:

  • Dónde es más útil: Patrones de lectura intensiva, como paneles, análisis interactivos y escaneos repetidos.
  • Cómo ayuda: Reorganiza el diseño Parquet (por ejemplo, distribución de grupos de filas, codificación y compresión) para mejorar la eficiencia de lectura.
  • Ventaja típica: Las escrituras pueden tardar más (a menudo alrededor de 15% en promedio), mientras que las lecturas pueden mejorar significativamente en función de la carga de trabajo.
  • Compatibilidad del motor: Los archivos siguen siendo conformes con Parquet de código abierto, y las características de Delta, como Z-Order, siguen siendo compatibles.
  • Alcance: El orden V es a nivel de archivo. Las operaciones delta, como la compactación, el vacío y el viaje de tiempo se pueden usar con él.

Escrituras en orden V de control

El orden en V se utiliza para optimizar el diseño de archivos Parquet y lograr un rendimiento de consulta más rápido, especialmente en escenarios con mucha lectura. En Fabric, el orden en V está deshabilitado por defecto para todos los espacios de trabajo recién creados para optimizar el rendimiento en cargas de trabajo de ingeniería de datos que requieren mucha escritura.

El comportamiento del orden V en Apache Spark se controla mediante las siguientes configuraciones:

Configuración Valor predeterminado Descripción
spark.sql.parquet.vorder.default false Controla la escritura en orden V a nivel de sesión. Configurado a false de forma predeterminada en las nuevas áreas de trabajo de Fabric.
TBLPROPERTIES("delta.parquet.vorder.enabled") Anular Controla el comportamiento predeterminado del orden V a nivel de tabla.
Opción del escritor de DataFrame: parquet.vorder.enabled Anular Se utiliza para controlar el orden V a nivel de operación de escritura.

Utiliza los siguientes comandos para habilitar o sobrescribir las escrituras en orden V según sea necesario para tu escenario.

El orden V está deshabilitado por defecto en los nuevos espacios de trabajo de Fabric (spark.sql.parquet.vorder.default=false) para mejorar el rendimiento de escritura en las canalizaciones de ingestión y transformación.

Para cargas de trabajo con mucha lectura, como consultas interactivas o paneles de control, activa el orden V configurando spark.sql.parquet.vorder.default en true. También puedes cambiar a readHeavyforSpark perfiles de recursos de OR ReadHeavy , que activan automáticamente el orden V para un rendimiento centrado en la lectura.

En el entorno de ejecución de Fabric 1.3 y versiones posteriores, se elimina la configuración spark.sql.parquet.vorder.enable. Como el orden V puede aplicarse automáticamente durante la optimización Delta con OPTIMIZE, no necesitas esta configuración antigua. Si va a migrar desde versiones anteriores del entorno de ejecución, quite esta configuración del código.

Comprobar la configuración del orden V en la sesión de Apache Spark

Use estos comandos para confirmar el valor de sesión actual antes de cambiarlo.

%%sql 
SET spark.sql.parquet.vorder.default 

Desactivar la escritura en orden V en una sesión de Apache Spark

Utilice estos comandos cuando la carga de trabajo sea intensiva en escritura y desee una ingestión o transformación más rápidas.

%%sql 
SET spark.sql.parquet.vorder.default=FALSE 

Habilitar la escritura en orden V en una sesión de Apache Spark

Cuando activas el orden V a nivel de sesión, todas las escrituras de Parquet en esa sesión usan el orden V, incluyendo tablas Parquet no Delta y tablas Delta incluso si parquet.vorder.enabled está explícitamente establecido en false.

%%sql 
SET spark.sql.parquet.vorder.default=TRUE 

Controla el orden en V usando propiedades de la tabla Delta

En esta sección solo se usa Spark SQL porque las propiedades de la tabla se definen a través de DDL y ALTER TABLE instrucciones de SQL.

Use las propiedades de tabla cuando desee un valor predeterminado de nivel de tabla que se aplique en todas las sesiones.

Activar la propiedad de la tabla V-order durante la creación de la tabla:

%%sql 
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");

Cuando la propiedad de la tabla se establece en true, INSERT, UPDATE, y MERGE aplican orden V en tiempo de escritura. Los ajustes a nivel de sesión y escritura siguen teniendo prioridad, por lo que las escrituras pueden seguir usando el orden V incluso cuando TBLPROPERTIES está configurado en false.

Activa o desactiva el orden en V alterando la propiedad de la tabla:

%%sql 
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");

ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");

ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");

Después de activar o desactivar el orden V usando las propiedades de la tabla, solo se ven afectadas las futuras escrituras en la tabla. Los archivos parquet mantienen la ordenación usada cuando se creó. Para cambiar la estructura física actual y aplicar o eliminar el orden V, lee Compactación de la Tabla.

Controlar el orden V directamente en operaciones de escritura

En esta sección se usa PySpark para mostrar la API dataFrame writer. El mismo patrón está disponible en las API de DataFrame de Scala con opciones equivalentes.

Use opciones de nivel de escritura cuando necesite el control por operación en lugar de valores predeterminados de sesión completa o de tabla completa.

Todos los comandos de escritura de Apache Spark heredan la configuración de sesión cuando no se invalidan explícitamente. Los siguientes ejemplos escriben usando el orden V heredando la configuración de la sesión.

df_source.write\
  .format("delta")\
  .mode("append")\
  .saveAsTable("myschema.mytable")

DeltaTable.createOrReplace(spark)\
  .addColumn("id","INT")\
  .addColumn("firstName","STRING")\
  .addColumn("middleName","STRING")\
  .addColumn("lastName","STRING",comment="surname")\
  .addColumn("birthDate","TIMESTAMP")\
  .location("Files/people")\
  .execute()

df_source.write\
  .format("delta")\
  .mode("overwrite")\
  .option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
  .saveAsTable("myschema.mytable") 

El orden V solo se aplica a los archivos afectados por el predicado.

En una sesión donde spark.sql.parquet.vorder.default está desconfigurado o establecido en false, los siguientes comandos escriben usando el orden V:

df_source.write\
  .format("delta")\
  .mode("overwrite")\
  .option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-01-31'")\
  .option("parquet.vorder.enabled","true")\
  .saveAsTable("myschema.mytable")

DeltaTable.createOrReplace(spark)\
  .addColumn("id","INT")\
  .addColumn("firstName","STRING")\
  .addColumn("middleName","STRING")\
  .addColumn("lastName","STRING",comment="surname")\
  .addColumn("birthDate","TIMESTAMP")\
  .option("parquet.vorder.enabled","true")\
  .location("Files/people")\
  .execute()