La respuesta corta es
r = m.reduceByKey(lambda x,y: (x))
Pero consideremos la naturaleza conmutativa y asociativa de la función reduceByKey, asumamos los siguientes valores
- A
- B
- C
- E
- A
- A
Y asumamos que los datos pueden estar en diferentes nodos de un cluster de Hadoop
una posibilidad de ejecución puede ser 1 y 5 y su resultado evaluarlo con 6 para encontrar una sola versión de A
pero también puede suceder que se evalúe 5 y 6 y luego 1 para encontrar una sola versión de A
Esto nos lleva a un dilema en el momento de crear nuestros programas en Spark pq este modelo nos lleva a pensar más allá y resolver los problemas siempre pensando en este paradigma
De otra forma, esta es otra solución (créditos vaerek)
from pyspark.sql import Row >>> df = sc.parallelize([ \ ... Row(name='Alice', age=5, height=80), \ ... Row(name='Alice', age=5, height=80), \ ... Row(name='Alice', age=10, height=80)]).toDF() >>> df.dropDuplicates().show() +---+------+-----+ |age|height| name| +---+------+-----+ | 5| 80|Alice| | 10| 80|Alice| +---+------+-----+ >>> df.dropDuplicates(['name', 'height']).show() +---+------+-----+ |age|height| name| +---+------+-----+ | 5| 80|Alice| +---+------+-----+
Espero sea de ayuda
FREDDY LEANDRO ANGARITA CASTELLANOS
Data platform MVP
@flacMVP