Publicado en: Jul 11, 2022

El tiempo de ejecución de Amazon EMR para Apache Spark: es un entorno de tiempo de ejecución optimizado para el rendimiento de Apache Spark, que se encuentra disponible y activado de forma predeterminada en los clústeres de Amazon EMR a partir de la versión 5.28. El tiempo de ejecución de Amazon EMR para Spark es hasta 3 veces más rápido con un 100 % de compatibilidad de las API con el código abierto de Spark.

Hoy nos complace anunciar el almacenamiento en caché de fragmentos de resultados, una nueva función disponible en el tiempo de ejecución EMR de Amazon para Apache Spark, para ayudar a acelerar las consultas que se dirigen a un subgrupo estático de datos. En nuestras pruebas internas derivadas del punto de referencia de TPC-H, cuando se usa Result Fragment Caching, las consultas que emplean funciones de ventana continuas e incrementales entregaron de manera consistente incrementos de hasta 15,6 veces en la velocidad del rendimiento de las consultas.

Con frecuencia, los clientes tienen datos en Amazon S3 que no cambian con el tiempo. Sin embargo, las consultas repetidas sobre esos conjuntos de datos necesitan volver a calcular los resultados en cada ejecución. Por ej., considere los datos de los pedidos de comercio electrónico que contienen información sobre los pedidos que se entregan o devuelven dentro de los 30 días. Suponga que un usuario quiere comparar la tendencia diaria de pedidos para un determinado producto para todo el año. Todos los datos de los pedidos no se modifican en su mayor parte, excepto los datos de los últimos 30 días, pero una consulta que agregue los resultados de los pedidos de todos los días del último año tendría que volver a calcular los resultados de cada día del año cada vez que se ejecute la consulta. El almacenamiento en caché de fragmentos de resultados aborda esta cuestión almacenando automáticamente en caché los fragmentos de resultados, es decir, todas las partes de los resultados de los subárboles de los planes de consulta de Spark, para luego reutilizar los resultados en posteriores ejecuciones de consulta. El almacenamiento en caché de fragmentos de resultados permite la máxima reutilización de los datos almacenados en caché, ya que los fragmentos, es decir, partes del resultado, pueden reutilizarse en consultas posteriores, a diferencia del almacenamiento en caché de conjuntos de resultados, en el que la consulta tiene que coincidir exactamente para devolver los resultados de la caché. Los fragmentos de resultados se almacenan en un bucket S3 designado por el cliente y se puede reutilizar en varios clústeres. Esto puede acelerar las consultas, en especial cuando los resultados son considerablemente más pequeños que el conjunto de datos de entrada. Con el almacenamiento en caché de fragmentos de resultados, las consultas repetidas que agregan pedidos en el último año sólo tendrían que calcular los últimos 30 días de datos modificados, mientras que para todos los días anteriores del año, los resultados agregados podrían servirse simplemente desde la caché, mejorando en gran medida el rendimiento de la consulta. El aumento de la velocidad podría ser aún más pronunciado en el caso de las consultas sobre datos que son en su mayoría inmutables y que sólo se insertan en el día actual, por ejemplo, en el caso de los eventos de la IoT, los datos de secuencias de los clics, etc. En los raros casos en que se modifican los datos, la caché de fragmentos de resultados detecta e invalida automáticamente los datos almacenados en la caché, lo que garantiza la exactitud de los datos.

La caché de fragmentos de resultados está disponible en todas las regiones donde está disponible el tiempo de ejecución EMR de Amazon EMR para Apache Spark.

Para comenzar con la caché de fragmentos de resultados consulte nuestra documentación aquí.