Recomendaciones de optimización en Azure Databricks

Las consultas lentas y los altos costes de cálculo suelen deberse a unas pocas causas raíz: leer más datos de los que necesita una consulta, barajar datos entre nodos, elegir un plan de consulta pobre o reescribir archivos que no han cambiado. Azure Databricks aborda muchas de estas causas automáticamente en cargas de trabajo que van desde el procesamiento ETL a gran escala hasta consultas ad hoc e interactivas. Otras optimizaciones solo se aplican cuando las activas o las ajustas para una carga de trabajo específica.

Esta página comienza con recomendaciones para la mayoría de las cargas de trabajo, luego agrupa las optimizaciones según si se ejecutan automáticamente o requieren que las configures, y describe el problema que resuelve cada una. La mayoría de las optimizaciones en tiempo de ejecución de Databricks requieren Delta Lake, el formato predeterminado para tablas en Azure Databricks.

Empieza con estas recomendaciones

Estas opciones ofrecen las mayores mejoras de rendimiento para la mayoría de las cargas de trabajo. También ayudan a que muchas de las optimizaciones automáticas de esta página funcionen al máximo.

  • Utiliza agrupamiento líquido para la disposición de tablas.El clustering líquido reemplaza la partición de tablas y ZORDER. Organiza los datos por las columnas en las que filtras con frecuencia, lo que mejora la omisión de datos y la poda dinámica de archivos.
  • Utiliza tablas gestionadas de Unity Catalog.La optimización predictiva mantiene las tablas gestionadas automáticamente. Consulte las tablas gestionadas de Unity Catalog para Delta Lake y Apache Iceberg.
  • Utiliza cómputo con Photon. La E/S predictiva requiere Photon, y también la poda dinámica de archivos en las sentencias MERGE, UPDATE y DELETE. Consulte ¿Qué es Photon?
  • Habilitar vectores de borrado. La E/S predictiva utiliza vectores de eliminación para evitar reescribir archivos enteros durante actualizaciones, eliminaciones y combinaciones, y la concurrencia a nivel de fila los requiere. Para las tablas Delta Lake, debes habilitar explícitamente los vectores de borrado. Consulte Vectores de eliminación en Databricks.
  • Utiliza el último Databricks Runtime. Las nuevas versiones incluyen las mejoras de rendimiento más recientes. Algunas optimizaciones requieren una versión mínima de Databricks Runtime o recursos informáticos habilitados para Photon. Consulta cada página para los requisitos.

Optimizaciones automáticas

Estas optimizaciones están activadas por defecto. No necesitas habilitarlos, pero algunos ofrecen más beneficios cuando tus tablas y tu capacidad de cómputo cumplen ciertas condiciones, como usar Photon o mantener actualizadas las estadísticas de la tabla.

  • Caché de disco: Acelera las consultas que leen repetidamente los mismos archivos de datos remotos de Parquet y Delta Lake. Azure Databricks almacena en caché copias de los archivos en el almacenamiento local de los nodos de cómputo para que las lecturas posteriores se ejecuten localmente. Azure Databricks lo activa automáticamente en tipos de instancias de trabajadores que lo soportan.
  • Poda dinámica de archivos: Salta archivos que no pueden contener filas coincidentes en uniones en tablas Delta Lake. MERGE, UPDATE y DELETE sentencias requieren compute con Photon para la poda dinámica de archivos.
  • Fusión con baja reorganización: Acelera MERGE las operaciones que actualizan o eliminan unas pocas filas de cada archivo. La fusión de baja mezcla procesa filas sin modificar sin una mezcla y preserva su disposición de datos existente.
  • Ejecución adaptativa de consultas: Reoptimiza los planes de consulta mientras las consultas se ejecutan, basándose en el tamaño real de los datos. Esto corrige estrategias de combinación lentas, demasiadas tareas pequeñas y tareas desequilibradas que provienen de estimaciones inexactas.
  • E/S predictiva: Acelera los escaneos de datos y reduce los datos reescritos durante las actualizaciones, eliminaciones y fusiones en entornos de cómputo con Photon habilitado.
  • Optimizador basado en costes: Utiliza estadísticas de tablas y columnas para elegir planes de consulta eficientes, especialmente para consultas con múltiples combinaciones. El optimizador basado en costes depende de las estadísticas, así que recóllalas y mantenlas actualizadas.
  • Optimización predictiva: Ejecuta OPTIMIZE, VACUUM y ANALYZE en las tablas administradas de Unity Catalog automáticamente, así que no necesitas programar el mantenimiento de tablas. También mantiene actualizadas las estadísticas que utiliza el optimizador basado en costes. Para comprobar si está activado para tu cuenta, consulta Verificar si la optimización predictiva está activada.

Optimizaciones configuradas

Estas optimizaciones requieren que las actives, las ajustes o cambies la configuración de la tabla. Úsalos cuando una carga de trabajo necesite un comportamiento que los valores predeterminados no cubren.

  • Compatibilidad con archivado: Utilízalo cuando las políticas de ciclo de vida en la nube trasladan archivos de tablas antiguos a niveles de almacenamiento de archivo para reducir costes de almacenamiento. La compatibilidad con archivado indica a Azure Databricks que ignore archivos anteriores a un periodo especificado, para que la política de ciclo de vida no rompa las consultas que solo leen datos recientes. Esta característica está en la versión preliminar pública.
  • Join de rango: Úselo cuando los joins usen una condición de punto en intervalo o de solapamiento de intervalos. Databricks SQL optimiza automáticamente los joins de rango. En otros entornos de cómputo, ajusta las combinaciones de rango con sugerencias de combinación o configuración de sesión.
  • Niveles de aislamiento y conflictos de escritura: Úsalo cuando las escrituras concurrentes en la misma tabla conflictan, o cuando una carga de trabajo necesita garantías más estrictas que el nivel de aislamiento predeterminado de WriteSerializable. El aislamiento serializable reduce el rendimiento para escrituras concurrentes. La concurrencia a nivel de fila resuelve automáticamente muchos conflictos entre escrituras concurrentes en tablas que cumplen sus requisitos.
  • Índices de búsqueda de texto completo: Úselos cuando las consultas busquen en columnas de texto subcadenas o palabras con las funciones search o isearch. El índice omite archivos que no pueden contener filas coincidentes. Esta característica está en beta.

Nota:

Los índices de filtro de Bloom son una función obsoleta de omisión de datos. Añaden sobrecarga de escritura y son difíciles de ajustar. Si tus tablas los tienen, consulta índices de filtro de Bloom (obsoletos) para saber cómo reemplazarlos y eliminarlos.

Otras características de rendimiento

Diagnosticar cargas de trabajo lentas o de alto coste

Si la carga de trabajo es más lenta o más cara de lo esperado y no sabes por qué, usa la interfaz de Spark para encontrar el cuello de botella antes de cambiar la configuración. Consulta Diagnostica problemas de coste y rendimiento usando la interfaz de Spark.