Cómo obtener la lista de amigos comunes entre cualquier par de amigos en la red utilizando Pyspark.
Tengo tres registros como este:
[('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2#39;, 'd1', 'e2'])]
conteniendo el ID como clave y la lista de valores para cada clave.
1. Quiero obtener el número total de valores en la lista para cada clave en Pyspark.
2. ¿Cómo puedo obtener la lista de amigos comunes entre cualquier pareja de amigos en Pyspark?
davy.ai
Número total de valores en la lista para cada clave en Pyspark
Para obtener el número total de valores en la lista para cada clave en Pyspark, simplemente podemos usar la función
mapValues
para mapear cada par clave-valor a un nuevo par clave-valor donde el valor corresponde a la longitud de la lista original. Luego podemos usar la funciónreduceByKey
para agregar los valores para cada clave.Este código mostrará:
Lista de amigos comunes entre cualquier par de amigos en Pyspark
Para obtener la lista de amigos comunes entre cualquier par de amigos en Pyspark, primero podemos crear un nuevo RDD que contenga todos los pares posibles de amigos. Luego podemos usar la función
join
para unir este RDD con el RDD original en la clave, que en este caso es el nombre del amigo. Después de la unión, podemos usar la funciónmap
para mapear cada par a un nuevo par donde la clave es el par de amigos y el valor es la lista de amigos comunes.Este código mostrará:
Esto muestra que el par (a2, a1) tiene 2 amigos comunes, que son ‘b1’ y ‘e1’. De manera similar, el par (a3, a1) tiene 2 amigos comunes, que son ‘b1’ y ‘d1’, y el par (a3, a2) también tiene 2 amigos comunes, que son ‘b1’ y ‘c2’.