Almacenamiento en caché distribuido con variables de difusión: Apache Spark



Esta publicación de blog analiza el almacenamiento en caché distribuido con variables de transmisión y lo ayuda a comenzar a distribuir de manera eficiente valores grandes en la programación de Spark.

Contribuido por Prithviraj Bose





Las variables de difusión son útiles cuando es necesario almacenar en caché grandes conjuntos de datos en ejecutores. Este blog explica cómo empezar.

¿Qué son las variables de transmisión?



Las variables de difusión en Apache Spark es un mecanismo para compartir variables entre ejecutores que deben ser de solo lectura. Sin las variables de difusión, estas variables se enviarían a cada ejecutor para cada transformación y acción, y esto puede causar una sobrecarga de la red. Sin embargo, con las variables de difusión, se envían una vez a todos los ejecutores y se almacenan en caché para futuras referencias.

Caso de uso de variables de difusión

Imagínese que mientras hacemos una transformación necesitamos buscar una tabla grande de códigos postales / códigos pin. Aquí, no es factible enviar la tabla de búsqueda grande cada vez a los ejecutores, ni podemos consultar la base de datos cada vez. La solución debería ser convertir esta tabla de búsqueda en variables de difusión y Spark la almacenará en caché en cada ejecutor para referencia futura.

Tomemos un ejemplo sencillo para comprender los conceptos anteriores. Disponemos de un archivo CSV con nombres de países y sus capitales. El archivo CSV se puede encontrar Aquí .



CSV-file-distributed-caching

Suponiendo que estamos procesando datos demográficos de países y necesitamos obtener la capital de ese país. En este caso, podemos convertir los datos del archivo CSV en una variable de transmisión.

Primero cargamos el archivo CSV en un mapa, si se encuentra el archivo, el método regresa Algunos paises) si no vuelve Ninguna .

Después de cargar con éxito el archivo CSV, convertimos el mapa en una variable de transmisión y lo usamos en nuestro programa.

En el fragmento de código anterior cargamos el archivo CSV en un mapa países luego convertimos ese mapa en una variable de transmisión paisescaché . Posteriormente, creamos un RDD a partir de las claves de países . En el searchCountryDetails En el método buscamos todos los países comenzando con una letra definida por el usuario y el método devuelve un RDD de países junto con sus capitales. La variable de difusión countrieCache se utiliza para buscar las capitales.
De esta manera, no necesitamos enviar todos los datos CSV cada vez que necesitamos realizar una búsqueda.

El código para el searchCountryDetails se muestra a continuación,

Se puede encontrar el código fuente completo Aquí .

Tienes una pregunta para nosotros? Menciónalos en la sección de comentarios y nos comunicaremos contigo.

Artículos Relacionados:

diferencia entre final finalmente y finalizar en java

Explicación de los acumuladores de chispas

Explicación de Apache Spark combineByKey