Cómo obtener la lista de amigos en común entre cualquier par de amigos en la red a través de pyspark

0

Pregunta

Tengo tres discos como este [('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2', 'd1', 'e2'])] contiene el id de clave como la lista de los valores para cada clave.

  1. Quiero obtener el número total de valores de la lista para cada clave en pyspark.
  2. Cómo puedo obtener la lista de los amigos en común entre cualquier par de demonios en pyspark.
key-value pyspark
2021-11-24 00:54:04
1

Mejor respuesta

0

1 utilice Simplemente el size la función.

df = df.withColumn('num_friends', F.expr('size(friends)'))

2 Utilice el array_intersect función para obtener la intersección de las matrices.

cp_df = df.toDF('key_pair', 'friends_pair')
cross_df = df.crossJoin(cp_df).filter('key!=key_pair')
cross_df = cross_df.select(F.create_map('key', 'key_pair').alias('key_pair'),
                           F.array_intersect('friends', 'friends_pair').alias('common_friends'))
cross_df.show(truncate=False)
2021-11-24 02:39:00

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................