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.
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 al mejorar el rendimiento hasta 60% en las lecturas posteriores de los archivos almacenados en la memoria caché disponible.
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 total de procesamiento. 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 pools de Spark en 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 depende de la familia de nodos y el 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 utiliza tablas Delta Lake, o formatos de archivo Parquet o CSV.
No ve la ventaja de la memoria caché inteligente si:
Está leyendo un archivo que supere el tamaño de la memoria caché. Si es así, se podría eliminar el principio de los archivos y las consultas posteriores tendrían que recuperar nuevamente 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 redistribución. Al deshabilitar la caché inteligente, se libera espacio disponible 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 código siguiente en el cuaderno o estableciendo esta configuración en el área de trabajo o en el nivel de elemento entorno .
spark.conf.set("spark.synapse.vegas.useCache", "false/true")