MapReduce usando Apache Spark

Suraj P 21 junio 2023
  1. una descripción general de MapReduce
  2. Ejecute MapReduce con Apache Spark
MapReduce usando Apache Spark

En este artículo, aprenderemos cómo realizar un trabajo MapReduce utilizando Apache Spark con la ayuda del lenguaje de programación Scala.

una descripción general de MapReduce

MapReduce es un paradigma de programación de Hadoop, y está diseñado para procesar una gran cantidad de datos en paralelo. Este procesamiento o todo el trabajo se realiza dividiéndolo en partes más pequeñas, también conocidas como tareas.

Dado que sigue la arquitectura maestro-esclavo, el nodo maestro asigna la tarea y los nodos esclavos hacen los trabajos más pequeños (tareas). Estos esclavos (agrupación de servidores) procesan y dan salidas individuales.

MapReduce tiene dos componentes, uno es un mapper y otro es un reductor. En la primera fase, los datos se introducen en el mapeador, que convierte los datos entrantes en pares de clave y valor.

La salida generada por el mapeador a menudo se denomina salida intermedia. Esta salida del mapeador se proporciona como entrada al reductor, que realiza el tipo de cálculo de clasificación de agregación en función de la clave y proporciona el par final de clave-valor, que es nuestra salida final.

Ejecute MapReduce con Apache Spark

Aunque MapReduce es una parte importante del sistema Hadoop, también podemos ejecutarlo usando Spark. Veremos un programa muy conocido MapReduce que utiliza como ejemplo el código de recuento de palabras para entenderlo mejor.

Entonces, el enunciado del problema es que dado un archivo de texto, tenemos que contar la frecuencia de cada palabra en él.

Requisitos previos:

Estas cosas deben instalarse en el sistema para ejecutar el siguiente programa.

  1. JDK8
  2. Escala
  3. Hadoop
  4. Chispa

Tenemos que poner el archivo en el sistema de archivos HDFS e iniciar el shell spark.

Código de ejemplo: El siguiente código se ejecutó en el shell Spark.

val ourData = sc.textFile("myFile.txt");

ourData.collect;

val splitLines = ourData.flatMap(line => line.split(" "));

splitLines.collect;

val mapperData = splitLines.map(word => (word,1));

mapperData.collect;

val reducerData = mapperData.reduceByKey(_+_)

reducerData.collect

Cuando se ejecuta el código anterior, da la frecuencia de cada palabra presente en miarchivo.txt.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub