Eliminación dinámica de archivos

Cuando una consulta une una tabla Delta Lake grande a una tabla filtrada más pequeña, los valores del filtro no se conocen hasta que se ejecuta la consulta. Sin poda en tiempo de ejecución, la consulta escanea todos los archivos de la tabla grande, incluso los que no contienen filas coincidentes. La poda dinámica de archivos resuelve este problema. En tiempo de ejecución, el optimizador empuja los resultados del filtro desde un lado de la unión hasta el escaneo de la tabla Delta Lake y omite archivos que no pueden contener filas coincidentes.

La poda dinámica de archivos está habilitada por defecto. No necesitas cambiar tus consultas para beneficiarte de ello.

Cuando se aplica la poda dinámica de archivos

La poda dinámica de archivos solo se aplica a uniones en tablas Delta Lake. En una instrucción MERGE, utiliza los valores de la clave de unión de la fuente para saltar archivos de destino cuando la condición de fusión compara una columna de la fuente con una columna de destino para comprobar la igualdad. En las sentencias UPDATE y DELETE, se aplica cuando la condición contiene una subconsulta que realiza el mismo tipo de comparación.

La poda dinámica de archivos en las sentencias MERGE, UPDATE y DELETE requiere cómputo con Photon habilitado. Para las SELECT sentencias, Photon tiene una poda dinámica de archivos más amplia y fiable. Sin Photon, la poda dinámica de archivos podría seguir aplicándose a las instrucciones SELECT, dependiendo de la forma de la consulta y el plan de ejecución. Consulte ¿Qué es Photon?

La poda dinámica de archivos mejora el rendimiento principalmente para tablas no particionadas y para uniones en columnas no particionadas. Por defecto, solo se activa cuando la tabla grande Delta Lake en la join tiene al menos 10 GB y al menos 10 archivos. Consulte Configuración.

La poda dinámica de archivos también reduce los conflictos de escritura. Cuando Delta Lake comprueba conflictos durante un commit, considera archivos que la poda dinámica omitió. Esto reduce el número de transacciones fallidas. Ver Niveles de aislamiento y conflictos de escritura.

Prácticas recomendadas

El efecto en rendimiento de la poda dinámica de archivos se correlaciona con cómo se agrupan los datos. Si los valores de la condición de unión están repartidos por todos los archivos, la poda dinámica de archivos salta pocos archivos. Para ayudar a que la poda dinámica de archivos omita más archivos, sigue estas prácticas:

  • Utiliza clustering líquido en las columnas con las que realizas uniones frecuentemente, para que las filas coincidentes estén colocadas en menos archivos.
  • Utiliza computación habilitada para Photon, que requieren las sentencias MERGE, UPDATE y DELETE para la poda dinámica de archivos.

Configuración

La mayoría de las cargas de trabajo no necesitan cambiar estos ajustes. Considera ajustar los umbrales si una unión contra una tabla Delta Lake más pequeña se beneficiaría de la poda pero queda por debajo del umbral por defecto de tamaño o de número de archivos.

Estas propiedades de configuración de Apache Spark controlan la poda dinámica de archivos:

Property Type Predeterminado Description
spark.databricks.optimizer.dynamicFilePruning Boolean true Activa o desactiva la poda dinámica de archivos.
spark.databricks.optimizer.deltaTableSizeThreshold Long 10000000000 (10 GB) El tamaño mínimo, en bytes, de la tabla grande Delta Lake en la unión que activa la poda dinámica de archivos. Para una tabla pequeña, escanear toda la tabla suele ser más barato que aplicar los filtros en origen.
Para encontrar el tamaño de una tabla de Delta Lake, corre DESCRIBE DETAIL table_name y revisa la sizeInBytes columna.
spark.databricks.optimizer.deltaTableFilesThreshold Integer 10 El número mínimo de archivos en la tabla grande Delta Lake en la unión que desencadena la poda dinámica de archivos. Si la tabla tiene menos archivos que este umbral, la poda dinámica de archivos no se ejecuta, porque puede que no merezca la pena para una tabla con solo unos pocos archivos.
Para encontrar el número de archivos en una tabla de Delta Lake, ejecuta DESCRIBE DETAIL table_name y revisa la numFiles columna.