Compartir vía


Caché inteligente en Microsoft Fabric

La característica de caché inteligente funciona perfectamente en segundo plano y almacena en caché los datos para ayudar a acelerar la ejecución de trabajos de Apache Spark en Microsoft Fabric a medida que lee desde el almacenamiento de OneLake o Azure Data Lake Storage (ADLS) Gen2 a través de accesos directos. También detecta automáticamente los cambios en los archivos subyacentes y actualiza automáticamente los archivos de la memoria caché, lo que proporciona los datos más recientes. Cuando el tamaño de la memoria caché alcanza su límite, la memoria caché libera automáticamente los datos menos leídos para hacer espacio para los datos más recientes. Esta característica reduce el costo total de propiedad, ya que mejora el rendimiento hasta un 60 % en las lecturas posteriores de los archivos almacenados en la caché disponible para archivos Parquet y un 50 % para los archivos CSV.

Cuando el motor de Apache Spark de Microsoft Fabric consulta un archivo o una tabla desde Lakehouse, realiza una llamada al almacenamiento remoto para leer los archivos subyacentes. Con cada solicitud de consulta para leer los mismos datos, el motor de Spark debe realizar una llamada al almacenamiento remoto cada vez. Este proceso redundante agrega latencia al tiempo de procesamiento total. Spark tiene un requisito de almacenamiento en caché que debe establecer y liberar manualmente la memoria caché para minimizar la latencia y mejorar el rendimiento general. Sin embargo, este requisito puede dar lugar a datos obsoletos si cambian los datos subyacentes.

La caché inteligente simplifica el proceso almacenando en caché automáticamente cada lectura dentro del espacio de almacenamiento de caché asignado en cada nodo de Spark donde los archivos de datos se almacenan en caché en SSD. Cada solicitud de un archivo comprueba si el archivo existe en la caché del nodo local y compara la etiqueta del almacenamiento remoto para determinar si el archivo está obsoleto. Si el archivo no existe o si el archivo está obsoleto, Spark lee el archivo y lo almacena en la memoria caché. Cuando la caché se llena, el archivo con la hora de último acceso más antigua se expulsa de la memoria caché para permitir archivos más recientes.

La caché inteligente es una sola caché por nodo. Si usa un nodo de tamaño mediano y se ejecuta con dos ejecutores pequeños en ese único nodo, los dos ejecutores comparten la misma memoria caché. Además, este almacenamiento en caché de nivel de archivo de datos permite que varias consultas usen la misma caché si acceden a los mismos datos o archivos de datos.

Cómo funciona

En Microsoft Fabric (Runtime 1.1 y 1.2), el almacenamiento en caché inteligente está habilitado de forma predeterminada para todos los grupos de Spark para todas las áreas de trabajo con un tamaño de caché del 50 %. El tamaño real del almacenamiento disponible y el tamaño de caché de cada nodo dependen de la familia de nodos y del tamaño del nodo.

Cuándo usar caché inteligente

Esta característica le beneficia si:

  • La carga de trabajo requiere leer el mismo archivo varias veces y el tamaño del archivo se ajusta a la memoria caché.

  • La carga de trabajo usa tablas Delta Lake, formatos de archivo Parquet o CSV.

El uso de la memoria caché inteligente no le beneficiará si:

  • Está leyendo un archivo que supere el tamaño de la memoria caché. Si es así, se podría expulsar el principio de los archivos y las consultas posteriores tienen que volver a capturar los datos desde el almacenamiento remoto. En este caso, no verá ninguna ventaja de la caché inteligente y es posible que quiera aumentar el tamaño de la caché o el tamaño del nodo.

  • La carga de trabajo requiere grandes cantidades de orden aleatorio. Al deshabilitar la caché inteligente, se libera espacio para evitar que el trabajo produzca errores debido a un espacio de almacenamiento insuficiente.

Habilitación y deshabilitación de la caché inteligente

Puede deshabilitar o habilitar la caché inteligente dentro de una sesión ejecutando el siguiente código en el cuaderno o estableciendo esta configuración en el área de trabajo o en el nivel de elementoEntorno.

spark.conf.set("spark.synapse.vegas.useCache", "false/true")