En este blog, vamos a aprender a responder a la pregunta de entrevista de Spark más frecuente. Podría decir que el 90 por ciento de las personas se encuentran con esta pregunta en sus entrevistas, es decir, ¿Cuál es la principal diferencia entre Mapa y mapa plano en Spark? y en algunos casos, se les pide a las personas que escriban un fragmento de código para ilustrar el principio de funcionamiento detrás de Map vs flatMap. Si eres principiante en BigData y necesitas un vistazo rápido a la programación de PySpark, entonces te recomendaría leer Cómo Escribir el Recuento de palabras en Spark .Vamos a aprender a responder a esta pregunta con un simple ejemplo en tiempo real.
Apache Spark proporciona una operación básica que se realiza sobre el bloque de construcción básico del núcleo de Spark llamado RDD. Estas operaciones no son más que las funciones o el método con cierta lógica para transformar el RDD y obtener la salida esperada de él. Puede ser una lógica simple filtrar, ordenar o resumir los resultados generales. Las operaciones realizadas en la parte superior de nuestro Spark RDD se pueden clasificar en dos tipos:,

      • Acciones de transformación

¿Qué es la Transformación?

Las transformaciones de chispa son el proceso de convertir o transformar el RDD de datos dado, que es de naturaleza inmutable en otro RDD de datos mediante la aplicación de alguna lógica de transformación. Si necesita más detalles sobre qué es Spark RDD? siga el enlace para obtener más información sobre Spark RDD. El punto más importante a tener en cuenta es que cuando aplicamos transformación sobre cualquier RDD en Spark, la operación no se realiza de inmediato. Guardará la lista de operaciones a realizar sobre el RDD de origen en una secuencia mediante la creación de un gráfico Acíclico Dirigido (DAG). Una vez que se llama la Acción Spark, se ejecutará toda la Transformación en la secuencia de DAG. Esta propiedad de Spark se define como una Ejecución perezosa de Spark. Podemos aprender más en detalle sobre la Transformación, la Acción y la Ejecución Especulativa en nuestros próximos capítulos. Ahora, para continuar, las transformaciones son la operación básica ejecutada sobre Spark RDD y pocos ejemplos de transformaciones son Map, Flatmap, Filter, Mappartition, etc.

UseCase para entender:

Consideremos un archivo de entrada como un archivo de texto y contiene alguna oración como se muestra a continuación. Nuestra tarea es aplicar la transformación de mapa y mapa plano uno por uno y observar los resultados producidos para comprender el trabajo y obtener conocimiento sobre dónde usar Mapa y Mapa plano. Hacemos esto aplicando la función split() en top Map() y flatMap() en PySpark. La misma lógica se puede aplicar en la programación de Scala y Java, así como con una ligera modificación de la sintaxis.

Fragmento de código para leer el archivo de texto mediante SparkSession:

Operación de mapa:

El mapa es un tipo de transformación de Chispa, que se utiliza para realizar operaciones en el nivel de registro. La operación de mapa de chispa aplica la lógica a realizar, definida por el código personalizado de los desarrolladores en cada colección de RDD y proporciona los resultados para cada fila como una nueva colección de RDD.

En palabras simples, la transformación de mapa transforma la colección de RDD de una longitud dada, por ejemplo, L, en RDD procesado de la misma longitud L. Normalmente, el número de registros o elementos entre el RDD de entrada y el de salida seguirá siendo el mismo. Ahora es el momento de un poco de práctica, apliquemos la operación de mapa al archivo de entrada dado con la función de división en él y verifique el recuento de líneas de entrada y salida de registros producidos.
Fragmento de código:
# Operación de mapa
map_RDD = input_RDD.map (lambda x: x.split(‘ ‘))
map_RDD.recoger ()
Fuera:

A partir de la salida, es evidente que al usar la función de mapa, el número de registros de salida coincidirá exactamente con el número de registros de entrada pasados al proceso. Podemos comprobar el número de registros usando la función count() como se muestra en el diagrama siguiente. Podemos observar que tanto la entrada como la salida tienen un recuento de registros de 4.

En el escenario de palabras reales, la función de mapa con lógica dividida se usa a menudo para formar un marco de datos spark para realizar operaciones a nivel de tabla. Para obtener más información sobre los marcos de datos, consulte este enlace Cómo crear marcos de datos en Spark.

Operación de mapa plano:

Mapa plano en Apache Spark es una operación de transformación que da como resultado cero o más elementos para cada elemento presente en el RDD de entrada. Es similar a la función de mapa, aplica la lógica construida por el usuario a los registros de cada uno en el RDD y devuelve los registros de salida como nuevos RDD. En flatmap (), si el RDD de entrada con longitud, por ejemplo, L, se pasa a la lógica definida por el usuario, entonces produce el RDD de salida de longitud diferente, por ejemplo, M.

El fragmento de código para realizar la función split() en la transformación de flatmap () se muestra a continuación.
Fragmento de código:
# Operación mapa plano
Mapa plano = input_RDD.Mapa plano (lambda x: x. split ( » ))
Mapa plano_rdd.recoger ()
Fuera:

Podemos observar que el número de filas de entrada pasadas a flatmap no es igual al número de salida que obtuvimos. Aplicando la función count () encima de flatmap_rdd, podemos obtener el número de registros en ella.

Podemos notar que el RDD de entrada tiene 4 registros, mientras que el RDD de salida plana tiene 12 registros. Flatmap() se usa generalmente para obtener el número de palabras, el recuento de palabras que a menudo usa el orador en el documento dado, lo que será útil en el campo del análisis de texto.

Programa Completo: