Intelligence Cache en Azure Synapse Analytics

Intelligent Cache funciona perfectamente en segundo plano y almacena en caché los datos para ayudar a acelerar la ejecución de Spark al leer en el lago de datos de ADLS Gen2. También, de forma automática, detecta los cambios en los archivos subyacentes y actualiza los archivos en la memoria caché, lo que le proporciona los datos más recientes y, cuando el tamaño de la caché alcanza su límite, la memoria caché libera los datos menos leídos a fin de liberar espacio para los datos más recientes. Esta característica reduce el costo total de propiedad ya que mejora el rendimiento hasta un 65 % en las lecturas posteriores de los archivos almacenados en la caché disponible para archivos Parquet y un 50 % para los archivos CSV.

Al consultar un archivo o una tabla desde el lago de datos, el motor de Apache Spark en Synapse realizará una llamada al almacenamiento remoto de ADLS Gen2 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 de ADLS Gen2. Este proceso redundante agrega latencia al tiempo de procesamiento total. Spark proporciona una característica de almacenamiento en caché por la que debe establecer y liberar manualmente la memoria caché para minimizar la latencia y mejorar el rendimiento general. Sin embargo, esto puede hacer que los resultados tengan datos obsoletos si cambian los datos subyacentes.

Synapse Intelligent Cache simplifica este proceso almacenando automáticamente en caché las lecturas dentro del espacio de almacenamiento de caché asignado en cada nodo de Spark. Cada solicitud de un archivo comprobará si el archivo existe en la memoria caché y comparará la etiqueta del almacenamiento remoto para determinar si el archivo está obsoleto. Si el archivo no existe o si el archivo está obsoleto, Spark leerá el archivo y lo almacenará en la memoria caché. Cuando la memoria caché se llene, el archivo con la hora de último acceso más antigua se expulsará de la memoria caché para permitir archivos más recientes.

La caché de Synapse es una sola caché por nodo. Si usa un nodo de tamaño mediano y ejecuta con dos ejecutores pequeños en un único nodo de tamaño mediano, estos dos ejecutores compartirán la misma caché.

Habilitación o deshabilitación de la memoria caché

El tamaño de caché se puede ajustar en función del porcentaje del tamaño total del disco disponible para cada grupo de Apache Spark. De forma predeterminada, la memoria caché está establecida en deshabilitada, pero es tan fácil como mover la barra del control deslizante desde 0 (deshabilitada) al porcentaje deseado para que el tamaño de la caché lo habilite. Reservamos un mínimo del 20 % del espacio disponible en disco para los órdenes aleatorios de datos. Para cargas de trabajo intensivas de orden aleatorio, puede minimizar el tamaño de la memoria caché o deshabilitar la caché. Se recomienda comenzar con un tamaño de caché del 50 % y ajustarlo según sea necesario. Es importante tener en cuenta que si la carga de trabajo requiere mucho espacio en disco en el SSD local para el almacenamiento aleatorio o RDD, considere la posibilidad de reducir el tamaño de caché para reducir la posibilidad de error debido a almacenamiento insuficiente. El tamaño real del almacenamiento disponible y el tamaño de caché de cada nodo dependerán de la familia de nodos y del tamaño del nodo.

Habilitación de la caché para nuevos grupos de Spark

Al crear un nuevo grupo de Spark, en la pestaña de configuración adicional busque el control deslizante de Intelligent Cache que puede mover al tamaño preferido para habilitar la característica.

How to enable Intelligent Cache during new Spark pools creation

Habilitación o deshabilitación de la caché para grupos de Spark existentes

En el caso de los grupos de Spark existentes, vaya a la Configuración de escalado del grupo de Apache Spark que quiera habilitar y mueva el control deslizante a un valor mayor que 0 o, para deshabilitarlo, mueva el control deslizante a 0.

How to enable or disable Intelligent Cache for existing Spark pools

Cambio del tamaño de caché de los grupos de Spark existentes

Para cambiar el tamaño de la característica Intelligent Cache de un grupo, debe forzar un reinicio si el grupo tiene sesiones activas. Si el grupo de Spark tiene una sesión activa, se mostrará Forzar nueva configuración. Haga clic en la casilla y seleccione Aplicar para reiniciar automáticamente la sesión.

Force restarting a session after changing Intelligent Cache setting

Habilitación y deshabilitación de la caché en la sesión

Deshabilite fácilmente Intelligent Cache durante una sesión ejecutando el código siguiente en el cuaderno:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "false") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'false') 

Y habilítela mediante la ejecución de:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "true") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'true') 

¿Cuándo se debe usar Intelligent Cache y cuándo no?

Esta característica le beneficiará si:

  • La carga de trabajo requiere leer el mismo archivo varias veces y el tamaño del archivo puede caber en la caché.

  • La carga de trabajo usa tablas Delta, formatos de archivo Parquet y archivos CSV.

  • Usa Apache Spark 3 o posterior en Azure Synapse.

No obtendrá ventajas de esta característica si:

  • Lee un archivo que supera el tamaño de la caché porque el principio de los archivos podría expulsarse y las consultas posteriores tendrían que volver a capturar los datos desde el almacenamiento remoto. En este caso, no obtendrá ventajas de Intelligent Cache y es aconsejable aumentar el tamaño de la caché o el tamaño del nodo.

  • La carga de trabajo requiere grandes cantidades de orden aleatorio, ya que deshabilitar Intelligent Cache liberará espacio disponible para evitar que se produzcan errores en el trabajo debido a espacio de almacenamiento insuficiente.

  • Usa un grupo de Spark 3.1, deberá actualizar el grupo a la versión más reciente de Spark.

Saber más

Para más información sobre Apache Spark, consulte los siguientes artículos:

Para información sobre cómo configurar las opciones de sesión de Spark

Pasos siguientes

Un grupo de Apache Spark proporciona funcionalidades de proceso de macrodatos de código abierto donde los datos se pueden cargar, modelar, procesar y distribuir para obtener información de análisis más rápida. Para más información sobre cómo crear uno para ejecutar las cargas de trabajo de Spark, visite los siguientes tutoriales: