PySpark – union & unionAll

En PySpark, las operaciones de union y unionAll se utilizan para combinar dos o más conjuntos de datos. Ambas operaciones son muy útiles en el procesamiento de datos y se utilizan ampliamente en los proyectos de big data.
La operación union se utiliza para combinar dos RDD (Resilient Distributed Datasets) o DataFrames en un solo RDD o DataFrame, mientras que la operación unionAll se utiliza para combinar dos RDD o DataFrames manteniendo duplicados, es decir, no elimina las filas duplicadas.
A lo largo de este artículo, exploraremos en detalle estas operaciones y cómo se utilizan para procesar datos grandes en PySpark.
¿Qué es la operación de unión?
La operación union en PySpark se utiliza para unir dos RDDs o DataFrames y crear un nuevo RDD o DataFrame sin duplicados.
La sintaxis básica para la operación union en PySpark es la siguiente:
rdd1.union(rdd2)
Donde rdd1 y rdd2 son los RDDs que se van a unir. El nuevo RDD creado por la operación union contiene sólo una copia de las filas comunes a ambos RDDs.
Ejemplo de operación de unión en PySpark
Supongamos que tenemos dos RDD: rdd1 y rdd2. El código para unir estos RDDs se muestra a continuación:
rdd1 = sc.parallelize([(1, 'hola'), (2, 'adiós'), (3, 'hasta luego')])
rdd2 = sc.parallelize([(4, 'buenos días'), (5, 'buenas tardes'), (6, 'buenas noches')])
rdd3 = rdd1.union(rdd2)
print(rdd3.collect())
La salida de este código será:
[(1, 'hola'), (2, 'adiós'), (3, 'hasta luego'), (4, 'buenos días'), (5, 'buenas tardes'), (6, 'buenas noches')]
Como podemos ver, el RDD creado a través de la operación de unión contiene todas las filas de ambos RDDs.
¿Qué es la operación de uniónAll?
La operación unionAll en PySpark se utiliza para unir dos RDD o DataFrames y crear un nuevo RDD o DataFrame que contiene todas las filas, incluyendo las filas duplicadas.
La sintaxis básica para la operación unionAll en PySpark es la siguiente:
rdd1.unionAll(rdd2)
Donde rdd1 y rdd2 son los RDDs que se van a unir.
Ejemplo de operación de uniónAll en PySpark
Supongamos que tenemos dos RDDs: rdd1 y rdd2. El código para unir estos RDDs con la operación unionAll se muestra a continuación:
rdd1 = sc.parallelize([(1, 'hola'), (2, 'adiós'), (3, 'hasta luego')])
rdd2 = sc.parallelize([(3, 'que tal'), (4, 'buenos días'), (5, 'buenas tardes')])
rdd3 = rdd1.unionAll(rdd2)
print(rdd3.collect())
La salida de este código será:
[(1, 'hola'), (2, 'adiós'), (3, 'hasta luego'), (3, 'que tal'), (4, 'buenos días'), (5, 'buenas tardes')]
Como podemos ver, el RDD creado a través de la operación de unionAll contiene todas las filas de ambos RDDs, incluyendo las filas duplicadas.
Conclusión
Las operaciones de union y unionAll son muy útiles en PySpark y se utilizan ampliamente en el procesamiento de datos a gran escala. La operación de union se utiliza para unir dos RDDs o DataFrames sin duplicados, mientras que la operación de unionAll se utiliza para unir dos RDDs o DataFrames manteniendo duplicados.
Preguntas frecuentes
¿Cuál es la diferencia entre 'union' y 'unionAll' en PySpark?
La operación de union en PySpark se utiliza para unir dos RDDs o DataFrames sin duplicados, mientras que la operación de unionAll se utiliza para unir dos RDDs o DataFrames manteniendo duplicados.
¿Qué hacer si quiero unir más de dos RDDs o DataFrames?
Para unir más de dos RDDs o DataFrames, simplemente puede encadenar múltiples operaciones de unión una después de otra. Por ejemplo:
rdd1.union(rdd2).union(rdd3).union(rdd4)
¿Cómo puedo eliminar filas duplicadas en un RDD o DataFrame?
Para eliminar filas duplicadas en un RDD o DataFrame, puede utilizar la operación de distinct. Esta operación devuelve un nuevo DataFrame o RDD que contiene sólo una copia de cada fila.
¿Es posible unir dos RDDs o DataFrames con diferentes esquemas?
No, no es posible unir dos RDDs o DataFrames con diferentes esquemas. Los RDDs o DataFrames que se van a unir deben tener el mismo esquema.
Sección de código de ejemplo
Aquí mostramos unos ejemplos adicionales de cómo usar la operación union y unionAll en PySpark:
df1 = spark.createDataFrame([(1, 'hola'), (2, 'adiós'), (3, 'hasta luego')], ['col1', 'col2'])
df2 = spark.createDataFrame([(3, 'que tal'), (4, 'buenos días'), (5, 'buenas tardes')], ['col1', 'col2'])
df3 = df1.union(df2)
df4 = df1.unionAll(df2)
df3.show()
df4.show()
[nekopost slugs="pyspark-explode-explode-outer,concatenado-columnas-pyspark-dataframe,structtype-structfield-metodos-pyspark,max-pyspark,soltar-pyspark,convertir-el-tipo-de-entero-2-de-la-columna-pyspark-dataframe-string-t,pyspark-medio,con-columnenamed-pyspark,pyspark-orderby"]

Deja una respuesta